├── LICENSE ├── README.md ├── WebRTC.podspec ├── android ├── Vagrantfile ├── build.sh └── provision.sh └── ios ├── .gitignore ├── AppRTCDemo ├── AppRTCDemo-Info.plist ├── AppRTCDemo-Prefix.pch ├── Images.xcassets │ ├── AppIcon.appiconset │ │ └── Contents.json │ └── LaunchImage.launchimage │ │ └── Contents.json ├── en.lproj │ └── InfoPlist.strings └── main.m ├── WebRTC.xcodeproj ├── project.pbxproj └── xcshareddata │ └── xcschemes │ ├── AppRTCDemo.xcscheme │ ├── WebRTC Build.xcscheme │ ├── WebRTC Clone.xcscheme │ ├── WebRTC Dance.xcscheme │ ├── WebRTC Library.xcscheme │ └── WebRTC Pull.xcscheme ├── build.sh ├── build_webrtc.sh ├── clone.sh ├── dance.sh ├── framework_dance.sh ├── gclient_ios_and_mac_tools ├── gclient_mac_tools_for_ios_only ├── insert_two_lines_after_text.py ├── libjingle_peerconnection.podspec └── pull.sh /LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2014-2015, Pristine, Inc. 2 | All rights reserved. 3 | 4 | Redistribution and use in source and binary forms, with or without 5 | modification, are permitted provided that the following conditions are met: 6 | 7 | * Redistributions of source code must retain the above copyright notice, this 8 | list of conditions and the following disclaimer. 9 | 10 | * Redistributions in binary form must reproduce the above copyright notice, 11 | this list of conditions and the following disclaimer in the documentation 12 | and/or other materials provided with the distribution. 13 | 14 | * Neither the name of the {organization} nor the names of its 15 | contributors may be used to endorse or promote products derived from 16 | this software without specific prior written permission. 17 | 18 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 19 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 20 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 21 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 22 | FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 23 | DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 24 | SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 25 | CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 26 | OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 27 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ##WebRTC Build Scripts 2 | 3 | [![Join the chat at https://gitter.im/pristineio/webrtc-build-scripts](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/pristineio/webrtc-build-scripts?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
4 | A set of build scripts useful for building WebRTC libraries for Android and iOS. 5 | 6 | Bugs: Please submit the [revision](https://code.google.com/p/webrtc/source/list) number that you are using. There are frequent updates to this project so please watch the changelist for bug fixes. 7 | 8 | ###Android ARMv7, ARMv8, x86, x86_64 Builds -- [Guide here](http://tech.pristine.io/build-android-apprtc/) 9 | 10 | The following instructions are for building the native WebRTC libraries for Android. 11 | 12 | 13 | #### Getting Started 14 | ##### On Linux 15 | The scripts can probably work on most distros, although we only have experience with Ubuntu 12.04 and 14.04 on 64 bit machines. 16 | 17 | This is only required once. 18 | ```shell 19 | 20 | # Source all the routines 21 | source android/build.sh 22 | 23 | # Install any dependencies needed 24 | install_dependencies 25 | 26 | # Pull WebRTC 27 | get_webrtc 28 | ``` 29 | 30 | ##### On Mac or Windows 31 | If you don't have a Ubuntu machine available, or you are too lazy to setup a virtual machine manually, you can build WebRTC for Android on your Mac or Windows PC through our Vagrant script. 32 | 33 | First of all, you need to [download and install](http://www.vagrantup.com/downloads.html) Vagrant. After that, from the `/android` directory, you need to execute the following in you shell: 34 | 35 | ```shell 36 | 37 | # If you need to use private SSH keys from your host computer 38 | # Execute this line of code to ensure your private key is added to your identity 39 | ssh-add -L 40 | 41 | # If there are no identities, add them by: 42 | ssh-add ~/.ssh/id_rsa 43 | 44 | # Boot up and provision the Vagrant box 45 | vagrant up 46 | 47 | # SSH into the Vagrant box 48 | vagrant ssh 49 | 50 | ``` 51 | On Windows machines you may face issues with long path names on the VM that aren't handled correctly. A work around is to copy the script to another directory (not the one shared between the VM and Windows host), and build there: 52 | 53 | ```shell 54 | 55 | mkdir mybuild 56 | cd mybuild 57 | cp /vagrant/build.sh . 58 | source ./build.sh 59 | get_webrtc 60 | build_apprtc 61 | 62 | ``` 63 | 64 | #### Building the libraries 65 | 66 | Then you can build the Android example 67 | 68 | ```shell 69 | # Pull WebRTC 70 | get_webrtc 71 | 72 | # Build apprtc 73 | build_apprtc 74 | 75 | # Build in debug mode 76 | export WEBRTC_DEBUG=true 77 | build_apprtc 78 | ``` 79 | 80 | You can build for armv7, armv8, x86, x86_64 platform 81 | 82 | ```shell 83 | export WEBRTC_ARCH=armv7 #or armv8, x86, or x86_64 84 | prepare_gyp_defines && 85 | execute_build 86 | ``` 87 | 88 | You can build a particular [revision](https://code.google.com/p/webrtc/source/list) 89 | 90 | ```shell 91 | # Pull WebRTC 92 | get_webrtc 6783 93 | 94 | # Build apprtc 95 | build_apprtc 96 | ``` 97 | 98 | When the scripts are done you can find the .jar and .so file in $WEBRTC_ROOT under "libjingle\_peerconnection\_builds". 99 | 100 | 101 | 102 | ###iOS (armv7, arm64, i386) and Mac (X86_64) -- [Guide here](http://tech.pristine.io/build-ios-apprtc/) 103 | These steps must be run on Mac OSX 104 | 105 | Source the [ios build scripts](https://github.com/pristineio/webrtc-build-scripts/blob/master/ios/build.sh) or [open the Xcode project](https://github.com/pristineio/webrtc-build-scripts/tree/master/ios/WebRTC.xcodeproj) 106 | 107 | ```shell 108 | source ios/build.sh 109 | ``` 110 | 111 | Specify if you want to build for Debug/Profile/Release by setting either WEBRTC_DEBUG, WEBRTC_PROFILE, WEBRTC_RELEASE as an environment variable in your bash or xcode scheme run settings. 112 | ```shell 113 | WEBRTC_DEBUG=true 114 | WEBRTC_PROFILE=true 115 | #or 116 | WEBRTC_RELEASE=true 117 | ``` 118 | 119 | 120 | #### Building the libraries 121 | 122 | Then you can build the iOS example 123 | ```shell 124 | # We use the term webrtc dance a lot to build 125 | dance 126 | 127 | # Or in two steps 128 | get_webrtc 129 | # Make changes then build WebRTC 130 | build_webrtc 131 | ``` 132 | Mac example 133 | ```shell 134 | # Get WebRTC 135 | get_webrtc 136 | # Make changes then build WebRTC 137 | build_webrtc_mac 138 | ``` 139 | 140 | 141 | Check which [revision](https://code.google.com/p/webrtc/source/list) you are using at ./webrtc-build-scripts/ios/webrtc/libWebRTC-LATEST-Universal-Debug.a.version.txt 142 | 143 | 144 | Open the [xcode project](https://github.com/pristineio/webrtc-build-scripts/tree/master/ios/WebRTC.xcodeproj), and execute the [AppRTC Demo](https://code.google.com/p/webrtc/source/browse/#svn%2Ftrunk%2Ftalk%2Fexamples%2Fobjc%2FAppRTCDemo) on any iOS 7 device or simulator 145 | ```shell 146 | open ./webrtc-build-scripts/ios/WebRTC.xcodeproj 147 | ``` 148 | 149 | You can also build a particular [revision](https://code.google.com/p/webrtc/source/list) 150 | ```shell 151 | #Pull WebRTC 152 | update2Revision 6783 153 | ``` 154 | Make changes then, 155 | ```shell 156 | #Build WebRTC 157 | build_webrtc 158 | ``` 159 | Make sure you label your new binaries that are generated in 160 | ```shell 161 | ./webrtc-build-scripts/ios/webrtc/libjingle_peerconnection_builds 162 | ``` 163 | 164 | ##### Cocoapods!! 165 | [![Version](https://img.shields.io/cocoapods/v/libjingle_peerconnection.svg?style=flat)](http://cocoadocs.org/docsets/libjingle_peerconnection) 166 | [![License](https://img.shields.io/cocoapods/l/libjingle_peerconnection.svg?style=flat)](http://cocoadocs.org/docsets/libjingle_peerconnection) 167 | [![Platform](https://img.shields.io/cocoapods/p/libjingle_peerconnection.svg?style=flat)](http://cocoadocs.org/docsets/libjingle_peerconnection) 168 | 169 | ###### Usage 170 | 171 | To run the example AppRTC Demo project, clone the repo, and run `pod install` from the Example directory first. 172 | 173 | ###### Requirements 174 | A fast internet connection.... for your own sanity 175 | 176 | ###### Installation 177 | 178 | libjingle_peerconnection starting from revision 6931 is available through [CocoaPods](http://cocoapods.org). To install 179 | it, simply add the following line to your Podfile: 180 | 181 | pod "libjingle_peerconnection" 182 | 183 | iOS ARM64 builds are available as of 7810.0.0 184 | 185 | mac x86_64 builds are available as of 7759.0.0 186 | 187 | 188 | ###### Versioning 189 | 190 | The versioning can be explained as follows: 191 | 192 | 193 | [6931](https://code.google.com/p/webrtc/source/detail?r=6931).2.0 194 | 195 | 6931 reflects the SVN revision from the WebRTC root Google Code Project 196 | 197 | 2 reflects a Release Build (0 for Debug, 1 for Profile) 198 | 199 | Profile builds are no longer built by default 200 | 201 | The minor 0 reflects any changes I might need to make to the sample xcode project itself to work (incremented normally) 202 | 203 | 204 | -------------------------------------------------------------------------------- /WebRTC.podspec: -------------------------------------------------------------------------------- 1 | Pod::Spec.new do |s| 2 | s.name = "WebRTC" 3 | s.version = "11792.0.0" 4 | s.summary = "WebRTC is a free, open project that provides browsers and mobile applications with Real-Time Communications capabilities via simple APIs." 5 | s.homepage = "https://github.com/f0r3s1/webrtc-build" 6 | s.description = <<-DESC 7 | 8 | s.author = { 'Polyansky German' => 'gpolyansky@smedialink.com'} 9 | s.source = { :git => "git@github.com:f0r3s1/webrtc.git", :tag => '11792.0.0' } 10 | 11 | s.pod_target_xcconfig = { 'OTHER_LDFLAGS' => '-ObjC' } 12 | s.requires_arc = true 13 | s.module_name = 'WebRTC' 14 | s.ios.vendored_frameworks = 'WebRTC.framework' 15 | s.ios.framework = 'AVFoundation', 'AudioToolbox', 'CoreGraphics', 'CoreMedia', 'GLKit', 'UIKit', 'VideoToolbox' 16 | s.libraries = 'c', 'sqlite3', 'stdc++' 17 | s.requires_arc = true 18 | s.license = { 19 | :type => 'http://www.webrtc.org/license-rights/license', 20 | :text => <<-LICENSE 21 | Copyright (c) 2011, The WebRTC project authors. All rights reserved. 22 | 23 | Redistribution and use in source and binary forms, with or without 24 | modification, are permitted provided that the following conditions are 25 | met: 26 | 27 | * Redistributions of source code must retain the above copyright 28 | notice, this list of conditions and the following disclaimer. 29 | 30 | * Redistributions in binary form must reproduce the above copyright 31 | notice, this list of conditions and the following disclaimer in 32 | the documentation and/or other materials provided with the 33 | distribution. 34 | 35 | * Neither the name of Google nor the names of its contributors may 36 | be used to endorse or promote products derived from this software 37 | without specific prior written permission. 38 | 39 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 40 | "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 41 | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 42 | A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 43 | HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 44 | SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 45 | LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 46 | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 47 | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 48 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 49 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 50 | LICENSE 51 | } 52 | 53 | end -------------------------------------------------------------------------------- /android/Vagrantfile: -------------------------------------------------------------------------------- 1 | # -*- mode: ruby -*- 2 | # vi: set ft=ruby : 3 | 4 | VAGRANTFILE_API_VERSION = "2" 5 | 6 | Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| 7 | config.vm.box = "hashicorp/precise64" 8 | config.ssh.forward_agent = TRUE 9 | 10 | config.vm.provider "virtualbox" do |vb| 11 | vb.memory = 4096 12 | vb.cpus = 2 13 | end 14 | 15 | config.vm.network "private_network", ip: "192.168.50.4" 16 | config.vm.synced_folder ".", "/vagrant", type: :nfs 17 | 18 | config.vm.provision "shell", path: "provision.sh" 19 | end 20 | -------------------------------------------------------------------------------- /android/build.sh: -------------------------------------------------------------------------------- 1 | # !/bin/bash 2 | # Copyright Pristine Inc 3 | # Author: Rahul Behera 4 | # Author: Aaron Alaniz 5 | # Author: Arik Yaacob 6 | # 7 | # Builds the android peer connection library 8 | 9 | # Get location of the script itself .. thanks SO ! http://stackoverflow.com/a/246128 10 | SOURCE="${BASH_SOURCE[0]}" 11 | while [ -h "$SOURCE" ]; do # resolve $SOURCE until the file is no longer a symlink 12 | DIR="$( cd -P "$( dirname "$SOURCE" )" && pwd )" 13 | SOURCE="$(readlink "$SOURCE")" 14 | [[ $SOURCE != /* ]] && SOURCE="$DIR/$SOURCE" # if $SOURCE was a relative symlink, we need to resolve it relative to the path where the symlink file was located 15 | done 16 | PROJECT_ROOT="$( cd -P "$( dirname "$SOURCE" )" && pwd )" 17 | 18 | # Utility method for creating a directory 19 | create_directory_if_not_found() { 20 | # if we cannot find the directory 21 | if [ ! -d "$1" ]; 22 | then 23 | echo "$1 directory not found, creating..." 24 | mkdir -p "$1" 25 | echo "directory created at $1" 26 | fi 27 | } 28 | 29 | DEFAULT_WEBRTC_URL="https://chromium.googlesource.com/external/webrtc" 30 | DEPOT_TOOLS="$PROJECT_ROOT/depot_tools" 31 | WEBRTC_ROOT="$PROJECT_ROOT/webrtc" 32 | create_directory_if_not_found "$WEBRTC_ROOT" 33 | BUILD="$WEBRTC_ROOT/libjingle_peerconnection_builds" 34 | WEBRTC_TARGET="AppRTCDemo" 35 | 36 | ANDROID_TOOLCHAINS="$WEBRTC_ROOT/src/third_party/android_tools/ndk/toolchains" 37 | 38 | exec_ninja() { 39 | echo "Running ninja" 40 | ninja -C $1 $WEBRTC_TARGET 41 | } 42 | 43 | # Installs the required dependencies on the machine 44 | install_dependencies() { 45 | sudo apt-get -y install wget git gnupg flex bison gperf build-essential zip curl subversion pkg-config libglib2.0-dev libgtk2.0-dev libxtst-dev libxss-dev libpci-dev libdbus-1-dev libgconf2-dev libgnome-keyring-dev libnss3-dev 46 | #Download the latest script to install the android dependencies for ubuntu 47 | curl -o install-build-deps-android.sh https://src.chromium.org/svn/trunk/src/build/install-build-deps-android.sh 48 | #use bash (not dash which is default) to run the script 49 | sudo /bin/bash ./install-build-deps-android.sh 50 | #delete the file we just downloaded... not needed anymore 51 | rm install-build-deps-android.sh 52 | } 53 | 54 | # Update/Get/Ensure the Gclient Depot Tools 55 | # Also will add to your environment 56 | pull_depot_tools() { 57 | WORKING_DIR=`pwd` 58 | 59 | # Either clone or get latest depot tools 60 | if [ ! -d "$DEPOT_TOOLS" ] 61 | then 62 | echo Make directory for gclient called Depot Tools 63 | mkdir -p "$DEPOT_TOOLS" 64 | 65 | echo Pull the depo tools project from chromium source into the depot tools directory 66 | git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git $DEPOT_TOOLS 67 | 68 | else 69 | echo Change directory into the depot tools 70 | cd "$DEPOT_TOOLS" 71 | 72 | echo Pull the depot tools down to the latest 73 | git pull 74 | fi 75 | PATH="$PATH:$DEPOT_TOOLS" 76 | 77 | # Navigate back 78 | cd "$WORKING_DIR" 79 | } 80 | 81 | # Update/Get the webrtc code base 82 | pull_webrtc() { 83 | WORKING_DIR=`pwd` 84 | 85 | # If no directory where webrtc root should be... 86 | create_directory_if_not_found "$WEBRTC_ROOT" 87 | cd "$WEBRTC_ROOT" 88 | 89 | # Setup gclient config 90 | echo Configuring gclient for Android build 91 | if [ -z $USER_WEBRTC_URL ] 92 | then 93 | echo "User has not specified a different webrtc url. Using default" 94 | gclient config --name=src "$DEFAULT_WEBRTC_URL" 95 | else 96 | echo "User has specified their own webrtc url $USER_WEBRTC_URL" 97 | gclient config --name=src "$USER_WEBRTC_URL" 98 | fi 99 | 100 | # Ensure our target os is correct building android 101 | echo "target_os = ['unix', 'android']" >> .gclient 102 | 103 | # Get latest webrtc source 104 | echo Pull down the latest from the webrtc repo 105 | echo this can take a while 106 | if [ -z $1 ] 107 | then 108 | echo "gclient sync with newest" 109 | gclient sync 110 | else 111 | echo "gclient sync with $1" 112 | gclient sync -r $1 113 | fi 114 | 115 | # Navigate back 116 | cd "$WORKING_DIR" 117 | } 118 | 119 | # Prepare our build 120 | function wrbase() { 121 | export GYP_DEFINES="OS=android host_os=linux libjingle_java=1 build_with_libjingle=1 build_with_chromium=0 enable_tracing=1 enable_android_opensl=0" 122 | export GYP_GENERATORS="ninja" 123 | } 124 | 125 | # Arm V7 with Neon 126 | function wrarmv7() { 127 | wrbase 128 | export GYP_DEFINES="$GYP_DEFINES OS=android" 129 | export GYP_GENERATOR_FLAGS="$GYP_GENERATOR_FLAGS output_dir=out_android_armeabi-v7a" 130 | export GYP_CROSSCOMPILE=1 131 | echo "ARMv7 with Neon Build" 132 | } 133 | 134 | # Arm 64 135 | function wrarmv8() { 136 | wrbase 137 | export GYP_DEFINES="$GYP_DEFINES OS=android target_arch=arm64 target_subarch=arm64" 138 | export GYP_GENERATOR_FLAGS="output_dir=out_android_arm64-v8a" 139 | export GYP_CROSSCOMPILE=1 140 | echo "ARMv8 with Neon Build" 141 | } 142 | 143 | # x86 144 | function wrX86() { 145 | wrbase 146 | export GYP_DEFINES="$GYP_DEFINES OS=android target_arch=ia32" 147 | export GYP_GENERATOR_FLAGS="output_dir=out_android_x86" 148 | echo "x86 Build" 149 | } 150 | 151 | # x86_64 152 | function wrX86_64() { 153 | wrbase 154 | export GYP_DEFINES="$GYP_DEFINES OS=android target_arch=x64" 155 | export GYP_GENERATOR_FLAGS="output_dir=out_android_x86_64" 156 | echo "x86_64 Build" 157 | } 158 | 159 | 160 | # Setup our defines for the build 161 | prepare_gyp_defines() { 162 | # Configure environment for Android 163 | echo Setting up build environment for Android 164 | source "$WEBRTC_ROOT/src/build/android/envsetup.sh" 165 | 166 | # Check to see if the user wants to set their own gyp defines 167 | echo Export the base settings of GYP_DEFINES so we can define how we want to build 168 | if [ -z $USER_GYP_DEFINES ] 169 | then 170 | echo "User has not specified any gyp defines so we proceed with default" 171 | if [ "$WEBRTC_ARCH" = "x86" ] ; 172 | then 173 | wrX86 174 | elif [ "$WEBRTC_ARCH" = "x86_64" ] ; 175 | then 176 | wrX86_64 177 | elif [ "$WEBRTC_ARCH" = "armv7" ] ; 178 | then 179 | wrarmv7 180 | elif [ "$WEBRTC_ARCH" = "armv8" ] ; 181 | then 182 | wrarmv8 183 | fi 184 | else 185 | echo "User has specified their own gyp defines" 186 | export GYP_DEFINES="$USER_GYP_DEFINES" 187 | fi 188 | 189 | echo "GYP_DEFINES=$GYP_DEFINES" 190 | } 191 | 192 | # Builds the apprtc demo 193 | execute_build() { 194 | WORKING_DIR=`pwd` 195 | cd "$WEBRTC_ROOT/src" 196 | 197 | echo Run gclient hooks 198 | gclient runhooks 199 | 200 | if [ "$WEBRTC_ARCH" = "x86" ] ; 201 | then 202 | ARCH="x86" 203 | STRIP="$ANDROID_TOOLCHAINS/x86-4.9/prebuilt/linux-x86_64/bin/i686-linux-android-strip" 204 | elif [ "$WEBRTC_ARCH" = "x86_64" ] ; 205 | then 206 | ARCH="x86_64" 207 | STRIP="$ANDROID_TOOLCHAINS/x86_64-4.9/prebuilt/linux-x86_64/bin/x86_64-linux-android-strip" 208 | elif [ "$WEBRTC_ARCH" = "armv7" ] ; 209 | then 210 | ARCH="armeabi-v7a" 211 | STRIP="$ANDROID_TOOLCHAINS/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-strip" 212 | elif [ "$WEBRTC_ARCH" = "armv8" ] ; 213 | then 214 | ARCH="arm64-v8a" 215 | STRIP="$ANDROID_TOOLCHAINS/aarch64-linux-android-4.9/prebuilt/linux-x86_64/bin/aarch64-linux-android-strip" 216 | fi 217 | 218 | if [ "$WEBRTC_DEBUG" = "true" ] ; 219 | then 220 | BUILD_TYPE="Debug" 221 | else 222 | BUILD_TYPE="Release" 223 | fi 224 | 225 | ARCH_OUT="out_android_${ARCH}" 226 | REVISION_NUM=`get_webrtc_revision` 227 | echo "Build ${WEBRTC_TARGET} in $BUILD_TYPE (arch: ${WEBRTC_ARCH:-arm})" 228 | exec_ninja "$ARCH_OUT/$BUILD_TYPE" 229 | 230 | # Verify the build actually worked 231 | if [ $? -eq 0 ]; then 232 | SOURCE_DIR="$WEBRTC_ROOT/src/$ARCH_OUT/$BUILD_TYPE" 233 | TARGET_DIR="$BUILD/$BUILD_TYPE" 234 | create_directory_if_not_found "$TARGET_DIR" 235 | 236 | echo "Copy JAR File" 237 | create_directory_if_not_found "$TARGET_DIR/libs/" 238 | create_directory_if_not_found "$TARGET_DIR/jni/" 239 | 240 | ARCH_JNI="$TARGET_DIR/jni/${ARCH}" 241 | create_directory_if_not_found "$ARCH_JNI" 242 | 243 | # Copy the jar 244 | cp -p "$SOURCE_DIR/gen/libjingle_peerconnection_java/libjingle_peerconnection_java.jar" "$TARGET_DIR/libs/libjingle_peerconnection.jar" 245 | 246 | # Strip the build only if its release 247 | if [ "$WEBRTC_DEBUG" = "true" ] ; 248 | then 249 | cp -p "$WEBRTC_ROOT/src/$ARCH_OUT/$BUILD_TYPE/lib/libjingle_peerconnection_so.so" "$ARCH_JNI/libjingle_peerconnection_so.so" 250 | else 251 | "$STRIP" -o "$ARCH_JNI/libjingle_peerconnection_so.so" "$WEBRTC_ROOT/src/$ARCH_OUT/$BUILD_TYPE/lib/libjingle_peerconnection_so.so" -s 252 | fi 253 | 254 | cd "$TARGET_DIR" 255 | mkdir -p aidl 256 | mkdir -p assets 257 | mkdir -p res 258 | 259 | cd "$WORKING_DIR" 260 | echo "$BUILD_TYPE build for apprtc complete for revision $REVISION_NUM" 261 | else 262 | 263 | echo "$BUILD_TYPE build for apprtc failed for revision $REVISION_NUM" 264 | exit 1 265 | fi 266 | } 267 | 268 | # Gets the webrtc revision 269 | get_webrtc_revision() { 270 | DIR=`pwd` 271 | cd "$WEBRTC_ROOT/src" 272 | REVISION_NUMBER=`git log -1 | grep 'Cr-Commit-Position: refs/heads/master@{#' | egrep -o "[0-9]+}" | tr -d '}'` 273 | 274 | if [ -z "$REVISION_NUMBER" ] 275 | then 276 | REVISION_NUMBER=`git describe --tags | sed 's/\([0-9]*\)-.*/\1/'` 277 | fi 278 | 279 | if [ -z "$REVISION_NUMBER" ] 280 | then 281 | echo "Error grabbing revision number" 282 | exit 1 283 | fi 284 | 285 | echo $REVISION_NUMBER 286 | cd "$DIR" 287 | } 288 | 289 | get_webrtc() { 290 | pull_depot_tools && 291 | pull_webrtc $1 292 | } 293 | 294 | # Updates webrtc and builds apprtc 295 | build_apprtc() { 296 | export WEBRTC_ARCH=armv7 297 | prepare_gyp_defines && 298 | execute_build 299 | 300 | export WEBRTC_ARCH=armv8 301 | prepare_gyp_defines && 302 | execute_build 303 | 304 | export WEBRTC_ARCH=x86 305 | prepare_gyp_defines && 306 | execute_build 307 | 308 | export WEBRTC_ARCH=x86_64 309 | prepare_gyp_defines && 310 | execute_build 311 | } 312 | -------------------------------------------------------------------------------- /android/provision.sh: -------------------------------------------------------------------------------- 1 | export VAGRANT_MACHINE=1 2 | echo "export VAGRANT_MACHINE=1" >> .bashrc # we set this environment variable so that we put the webrtc code in a shared directory where the host machine can see the files and modify them 3 | apt-get update 4 | source /vagrant/build.sh 5 | 6 | install_dependencies 7 | 8 | echo "source /vagrant/build.sh" >> /home/vagrant/.bashrc 9 | -------------------------------------------------------------------------------- /ios/.gitignore: -------------------------------------------------------------------------------- 1 | depot_tools/ 2 | webrtc/ 3 | 4 | # Xcode 5 | .DS_Store 6 | build/ 7 | *.pbxuser 8 | !default.pbxuser 9 | *.mode1v3 10 | !default.mode1v3 11 | *.mode2v3 12 | !default.mode2v3 13 | *.perspectivev3 14 | !default.perspectivev3 15 | *.xcworkspace 16 | !default.xcworkspace 17 | xcuserdata 18 | profile 19 | *.moved-aside 20 | DerivedData 21 | .idea/ 22 | # Pods - for those of you who use CocoaPods 23 | Pods 24 | -------------------------------------------------------------------------------- /ios/AppRTCDemo/AppRTCDemo-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleDisplayName 8 | ${PRODUCT_NAME} 9 | CFBundleExecutable 10 | ${EXECUTABLE_NAME} 11 | CFBundleIdentifier 12 | io.pristine.${PRODUCT_NAME:rfc1034identifier} 13 | CFBundleInfoDictionaryVersion 14 | 6.0 15 | CFBundleName 16 | ${PRODUCT_NAME} 17 | CFBundlePackageType 18 | APPL 19 | CFBundleShortVersionString 20 | 1.0 21 | CFBundleSignature 22 | ???? 23 | CFBundleVersion 24 | 1.0 25 | LSRequiresIPhoneOS 26 | 27 | UIRequiredDeviceCapabilities 28 | 29 | armv7 30 | 31 | UISupportedInterfaceOrientations 32 | 33 | UIInterfaceOrientationPortrait 34 | UIInterfaceOrientationLandscapeLeft 35 | UIInterfaceOrientationLandscapeRight 36 | 37 | UISupportedInterfaceOrientations~ipad 38 | 39 | UIInterfaceOrientationPortrait 40 | UIInterfaceOrientationPortraitUpsideDown 41 | UIInterfaceOrientationLandscapeLeft 42 | UIInterfaceOrientationLandscapeRight 43 | 44 | 45 | 46 | -------------------------------------------------------------------------------- /ios/AppRTCDemo/AppRTCDemo-Prefix.pch: -------------------------------------------------------------------------------- 1 | // 2 | // Prefix header 3 | // 4 | // The contents of this file are implicitly included at the beginning of every source file. 5 | // 6 | 7 | #import 8 | 9 | #ifndef __IPHONE_3_0 10 | #warning "This project uses features only available in iOS SDK 3.0 and later." 11 | #endif 12 | 13 | #ifdef __OBJC__ 14 | #import 15 | #import 16 | #endif 17 | -------------------------------------------------------------------------------- /ios/AppRTCDemo/Images.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "iphone", 5 | "size" : "29x29", 6 | "scale" : "2x" 7 | }, 8 | { 9 | "idiom" : "iphone", 10 | "size" : "40x40", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "iphone", 15 | "size" : "60x60", 16 | "scale" : "2x" 17 | }, 18 | { 19 | "idiom" : "ipad", 20 | "size" : "29x29", 21 | "scale" : "1x" 22 | }, 23 | { 24 | "idiom" : "ipad", 25 | "size" : "29x29", 26 | "scale" : "2x" 27 | }, 28 | { 29 | "idiom" : "ipad", 30 | "size" : "40x40", 31 | "scale" : "1x" 32 | }, 33 | { 34 | "idiom" : "ipad", 35 | "size" : "40x40", 36 | "scale" : "2x" 37 | }, 38 | { 39 | "idiom" : "ipad", 40 | "size" : "76x76", 41 | "scale" : "1x" 42 | }, 43 | { 44 | "idiom" : "ipad", 45 | "size" : "76x76", 46 | "scale" : "2x" 47 | } 48 | ], 49 | "info" : { 50 | "version" : 1, 51 | "author" : "xcode" 52 | } 53 | } -------------------------------------------------------------------------------- /ios/AppRTCDemo/Images.xcassets/LaunchImage.launchimage/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "orientation" : "portrait", 5 | "idiom" : "iphone", 6 | "extent" : "full-screen", 7 | "minimum-system-version" : "7.0", 8 | "scale" : "2x" 9 | }, 10 | { 11 | "orientation" : "portrait", 12 | "idiom" : "iphone", 13 | "subtype" : "retina4", 14 | "extent" : "full-screen", 15 | "minimum-system-version" : "7.0", 16 | "scale" : "2x" 17 | }, 18 | { 19 | "orientation" : "portrait", 20 | "idiom" : "ipad", 21 | "extent" : "full-screen", 22 | "minimum-system-version" : "7.0", 23 | "scale" : "1x" 24 | }, 25 | { 26 | "orientation" : "landscape", 27 | "idiom" : "ipad", 28 | "extent" : "full-screen", 29 | "minimum-system-version" : "7.0", 30 | "scale" : "1x" 31 | }, 32 | { 33 | "orientation" : "portrait", 34 | "idiom" : "ipad", 35 | "extent" : "full-screen", 36 | "minimum-system-version" : "7.0", 37 | "scale" : "2x" 38 | }, 39 | { 40 | "orientation" : "landscape", 41 | "idiom" : "ipad", 42 | "extent" : "full-screen", 43 | "minimum-system-version" : "7.0", 44 | "scale" : "2x" 45 | } 46 | ], 47 | "info" : { 48 | "version" : 1, 49 | "author" : "xcode" 50 | } 51 | } -------------------------------------------------------------------------------- /ios/AppRTCDemo/en.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Localized versions of Info.plist keys */ 2 | 3 | -------------------------------------------------------------------------------- /ios/AppRTCDemo/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // AppRTCDemo 4 | // 5 | // Created by Rahul Behera on 6/18/14. 6 | // Copyright (c) 2014 Pristine, Inc. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | #import "AppRTCAppDelegate.h" 12 | 13 | int main(int argc, char * argv[]) 14 | { 15 | @autoreleasepool { 16 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([APPRTCAppDelegate class])); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /ios/WebRTC.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- 1 | // !$*UTF8*$! 2 | { 3 | archiveVersion = 1; 4 | classes = { 5 | }; 6 | objectVersion = 46; 7 | objects = { 8 | 9 | /* Begin PBXBuildFile section */ 10 | 7E5B77AD1A7A84A700EF3056 /* LICENSE in Resources */ = {isa = PBXBuildFile; fileRef = 7E5B77AA1A7A84A700EF3056 /* LICENSE */; }; 11 | 7E5B77AE1A7A84A700EF3056 /* SRWebSocket.m in Sources */ = {isa = PBXBuildFile; fileRef = 7E5B77AC1A7A84A700EF3056 /* SRWebSocket.m */; }; 12 | 7E5B77B01A7A986600EF3056 /* libicucore.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 7E5B77AF1A7A986600EF3056 /* libicucore.dylib */; }; 13 | 7EE0C2831A7A812E0067E0BE /* ARDAppEngineClient.m in Sources */ = {isa = PBXBuildFile; fileRef = 7EE0C2691A7A812E0067E0BE /* ARDAppEngineClient.m */; }; 14 | 7EE0C2841A7A812E0067E0BE /* ARDCEODTURNClient.m in Sources */ = {isa = PBXBuildFile; fileRef = 7EE0C26B1A7A812E0067E0BE /* ARDCEODTURNClient.m */; }; 15 | 7EE0C2851A7A812E0067E0BE /* ARDJoinResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 7EE0C26D1A7A812E0067E0BE /* ARDJoinResponse.m */; }; 16 | 7EE0C2861A7A812E0067E0BE /* ARDMessageResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 7EE0C2701A7A812E0067E0BE /* ARDMessageResponse.m */; }; 17 | 7EE0C2871A7A812E0067E0BE /* ARDSignalingMessage.m in Sources */ = {isa = PBXBuildFile; fileRef = 7EE0C2751A7A812E0067E0BE /* ARDSignalingMessage.m */; }; 18 | 7EE0C2881A7A812E0067E0BE /* ARDUtilities.m in Sources */ = {isa = PBXBuildFile; fileRef = 7EE0C2781A7A812E0067E0BE /* ARDUtilities.m */; }; 19 | 7EE0C2891A7A812E0067E0BE /* ARDWebSocketChannel.m in Sources */ = {isa = PBXBuildFile; fileRef = 7EE0C27A1A7A812E0067E0BE /* ARDWebSocketChannel.m */; }; 20 | 7EE0C28A1A7A812E0067E0BE /* RTCICECandidate+JSON.m in Sources */ = {isa = PBXBuildFile; fileRef = 7EE0C27C1A7A812E0067E0BE /* RTCICECandidate+JSON.m */; }; 21 | 7EE0C28B1A7A812E0067E0BE /* RTCICEServer+JSON.m in Sources */ = {isa = PBXBuildFile; fileRef = 7EE0C27E1A7A812E0067E0BE /* RTCICEServer+JSON.m */; }; 22 | 7EE0C28C1A7A812E0067E0BE /* RTCMediaConstraints+JSON.m in Sources */ = {isa = PBXBuildFile; fileRef = 7EE0C2801A7A812E0067E0BE /* RTCMediaConstraints+JSON.m */; }; 23 | 7EE0C28D1A7A812E0067E0BE /* RTCSessionDescription+JSON.m in Sources */ = {isa = PBXBuildFile; fileRef = 7EE0C2821A7A812E0067E0BE /* RTCSessionDescription+JSON.m */; }; 24 | 7EE0C2901A7A814C0067E0BE /* ARDAppClient.m in Sources */ = {isa = PBXBuildFile; fileRef = 7EE0C28F1A7A814C0067E0BE /* ARDAppClient.m */; }; 25 | 7EE0C2A71A7A815F0067E0BE /* ARDAppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 7EE0C2931A7A815F0067E0BE /* ARDAppDelegate.m */; }; 26 | 7EE0C2A81A7A815F0067E0BE /* ARDMainView.m in Sources */ = {isa = PBXBuildFile; fileRef = 7EE0C2951A7A815F0067E0BE /* ARDMainView.m */; }; 27 | 7EE0C2A91A7A815F0067E0BE /* ARDMainViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 7EE0C2971A7A815F0067E0BE /* ARDMainViewController.m */; }; 28 | 7EE0C2AA1A7A815F0067E0BE /* ARDVideoCallView.m in Sources */ = {isa = PBXBuildFile; fileRef = 7EE0C2991A7A815F0067E0BE /* ARDVideoCallView.m */; }; 29 | 7EE0C2AB1A7A815F0067E0BE /* ARDVideoCallViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 7EE0C29B1A7A815F0067E0BE /* ARDVideoCallViewController.m */; }; 30 | 7EE0C2AE1A7A815F0067E0BE /* Default-568h.png in Resources */ = {isa = PBXBuildFile; fileRef = 7EE0C29F1A7A815F0067E0BE /* Default-568h.png */; }; 31 | 7EE0C2AF1A7A815F0067E0BE /* Roboto-Regular.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 7EE0C2A01A7A815F0067E0BE /* Roboto-Regular.ttf */; }; 32 | 7EE0C2B01A7A815F0067E0BE /* ic_call_end_black_24dp.png in Resources */ = {isa = PBXBuildFile; fileRef = 7EE0C2A11A7A815F0067E0BE /* ic_call_end_black_24dp.png */; }; 33 | 7EE0C2B11A7A815F0067E0BE /* ic_call_end_black_24dp@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 7EE0C2A21A7A815F0067E0BE /* ic_call_end_black_24dp@2x.png */; }; 34 | 7EE0C2B21A7A815F0067E0BE /* ic_clear_black_24dp.png in Resources */ = {isa = PBXBuildFile; fileRef = 7EE0C2A31A7A815F0067E0BE /* ic_clear_black_24dp.png */; }; 35 | 7EE0C2B31A7A815F0067E0BE /* ic_clear_black_24dp@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 7EE0C2A41A7A815F0067E0BE /* ic_clear_black_24dp@2x.png */; }; 36 | 7EE0C2B41A7A815F0067E0BE /* UIImage+ARDUtilities.m in Sources */ = {isa = PBXBuildFile; fileRef = 7EE0C2A61A7A815F0067E0BE /* UIImage+ARDUtilities.m */; }; 37 | C095E5EC1952485F00B9FAA0 /* libWebRTC-LATEST-Universal-Debug.a in Frameworks */ = {isa = PBXBuildFile; fileRef = C095E5EB1952485F00B9FAA0 /* libWebRTC-LATEST-Universal-Debug.a */; }; 38 | C095E5ED1952488200B9FAA0 /* libWebRTC-LATEST-Universal-Debug.a in Frameworks */ = {isa = PBXBuildFile; fileRef = C095E5EB1952485F00B9FAA0 /* libWebRTC-LATEST-Universal-Debug.a */; }; 39 | C0A129371951F48300C523D2 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C0A129361951F48300C523D2 /* Foundation.framework */; }; 40 | C0A129FB1952015900C523D2 /* AudioUnit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C0A129F91952015900C523D2 /* AudioUnit.framework */; }; 41 | C0A129FC1952015900C523D2 /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C0A129FA1952015900C523D2 /* AVFoundation.framework */; }; 42 | C0A12A04195201E400C523D2 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C0A129FD195201E400C523D2 /* CoreGraphics.framework */; }; 43 | C0A12A05195201E400C523D2 /* CoreMedia.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C0A129FE195201E400C523D2 /* CoreMedia.framework */; }; 44 | C0A12A06195201E400C523D2 /* GLKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C0A129FF195201E400C523D2 /* GLKit.framework */; }; 45 | C0A12A07195201E400C523D2 /* libc.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = C0A12A00195201E400C523D2 /* libc.dylib */; }; 46 | C0A12A08195201E400C523D2 /* libsqlite3.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = C0A12A01195201E400C523D2 /* libsqlite3.dylib */; }; 47 | C0A12A09195201E400C523D2 /* libstdc++.6.0.9.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = C0A12A02195201E400C523D2 /* libstdc++.6.0.9.dylib */; }; 48 | C0A12A0A195201E400C523D2 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C0A12A03195201E400C523D2 /* UIKit.framework */; }; 49 | C0A12AB5195202A600C523D2 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C0A129361951F48300C523D2 /* Foundation.framework */; }; 50 | C0A12AB6195202A600C523D2 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C0A129FD195201E400C523D2 /* CoreGraphics.framework */; }; 51 | C0A12AB7195202A600C523D2 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C0A12A03195201E400C523D2 /* UIKit.framework */; }; 52 | C0A12ABD195202A600C523D2 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = C0A12ABB195202A600C523D2 /* InfoPlist.strings */; }; 53 | C0A12AC5195202A600C523D2 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = C0A12AC4195202A600C523D2 /* Images.xcassets */; }; 54 | C0A12BC11952062E00C523D2 /* CoreMedia.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C0A129FE195201E400C523D2 /* CoreMedia.framework */; }; 55 | C0A12BC21952063100C523D2 /* GLKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C0A129FF195201E400C523D2 /* GLKit.framework */; }; 56 | C0A12BC31952063300C523D2 /* libc.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = C0A12A00195201E400C523D2 /* libc.dylib */; }; 57 | C0A12BC41952063600C523D2 /* libsqlite3.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = C0A12A01195201E400C523D2 /* libsqlite3.dylib */; }; 58 | C0A12BC71952064000C523D2 /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C0A129FA1952015900C523D2 /* AVFoundation.framework */; }; 59 | C0C3A7031A13FBC80062D421 /* Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = C0C3A6FA1A13FBC80062D421 /* Info.plist */; }; 60 | C0C3A7041A13FBC80062D421 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = C0C3A6FB1A13FBC80062D421 /* main.m */; }; 61 | C0C3A7051A13FBC80062D421 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = C0C3A6FB1A13FBC80062D421 /* main.m */; }; 62 | C0C3A7231A13FD680062D421 /* libstdc++.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = C0C3A7221A13FD680062D421 /* libstdc++.dylib */; }; 63 | /* End PBXBuildFile section */ 64 | 65 | /* Begin PBXContainerItemProxy section */ 66 | C0A12B071952031800C523D2 /* PBXContainerItemProxy */ = { 67 | isa = PBXContainerItemProxy; 68 | containerPortal = C0A1292B1951F48300C523D2 /* Project object */; 69 | proxyType = 1; 70 | remoteGlobalIDString = C0A129321951F48300C523D2; 71 | remoteInfo = WebRTC; 72 | }; 73 | /* End PBXContainerItemProxy section */ 74 | 75 | /* Begin PBXCopyFilesBuildPhase section */ 76 | C0A129311951F48300C523D2 /* CopyFiles */ = { 77 | isa = PBXCopyFilesBuildPhase; 78 | buildActionMask = 2147483647; 79 | dstPath = "include/$(PRODUCT_NAME)"; 80 | dstSubfolderSpec = 16; 81 | files = ( 82 | ); 83 | runOnlyForDeploymentPostprocessing = 0; 84 | }; 85 | /* End PBXCopyFilesBuildPhase section */ 86 | 87 | /* Begin PBXFileReference section */ 88 | 7E5B77AA1A7A84A700EF3056 /* LICENSE */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = LICENSE; sourceTree = ""; }; 89 | 7E5B77AB1A7A84A700EF3056 /* SRWebSocket.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SRWebSocket.h; sourceTree = ""; }; 90 | 7E5B77AC1A7A84A700EF3056 /* SRWebSocket.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SRWebSocket.m; sourceTree = ""; }; 91 | 7E5B77AF1A7A986600EF3056 /* libicucore.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libicucore.dylib; path = usr/lib/libicucore.dylib; sourceTree = SDKROOT; }; 92 | 7EE0C2671A7A812E0067E0BE /* ARDAppClient+Internal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "ARDAppClient+Internal.h"; path = "webrtc/src/talk/examples/objc/AppRTCDemo/ARDAppClient+Internal.h"; sourceTree = SOURCE_ROOT; }; 93 | 7EE0C2681A7A812E0067E0BE /* ARDAppEngineClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ARDAppEngineClient.h; path = webrtc/src/talk/examples/objc/AppRTCDemo/ARDAppEngineClient.h; sourceTree = SOURCE_ROOT; }; 94 | 7EE0C2691A7A812E0067E0BE /* ARDAppEngineClient.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = ARDAppEngineClient.m; path = webrtc/src/talk/examples/objc/AppRTCDemo/ARDAppEngineClient.m; sourceTree = SOURCE_ROOT; }; 95 | 7EE0C26A1A7A812E0067E0BE /* ARDCEODTURNClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ARDCEODTURNClient.h; path = webrtc/src/talk/examples/objc/AppRTCDemo/ARDCEODTURNClient.h; sourceTree = SOURCE_ROOT; }; 96 | 7EE0C26B1A7A812E0067E0BE /* ARDCEODTURNClient.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = ARDCEODTURNClient.m; path = webrtc/src/talk/examples/objc/AppRTCDemo/ARDCEODTURNClient.m; sourceTree = SOURCE_ROOT; }; 97 | 7EE0C26C1A7A812E0067E0BE /* ARDJoinResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ARDJoinResponse.h; path = webrtc/src/talk/examples/objc/AppRTCDemo/ARDJoinResponse.h; sourceTree = SOURCE_ROOT; }; 98 | 7EE0C26D1A7A812E0067E0BE /* ARDJoinResponse.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = ARDJoinResponse.m; path = webrtc/src/talk/examples/objc/AppRTCDemo/ARDJoinResponse.m; sourceTree = SOURCE_ROOT; }; 99 | 7EE0C26E1A7A812E0067E0BE /* ARDJoinResponse+Internal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "ARDJoinResponse+Internal.h"; path = "webrtc/src/talk/examples/objc/AppRTCDemo/ARDJoinResponse+Internal.h"; sourceTree = SOURCE_ROOT; }; 100 | 7EE0C26F1A7A812E0067E0BE /* ARDMessageResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ARDMessageResponse.h; path = webrtc/src/talk/examples/objc/AppRTCDemo/ARDMessageResponse.h; sourceTree = SOURCE_ROOT; }; 101 | 7EE0C2701A7A812E0067E0BE /* ARDMessageResponse.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = ARDMessageResponse.m; path = webrtc/src/talk/examples/objc/AppRTCDemo/ARDMessageResponse.m; sourceTree = SOURCE_ROOT; }; 102 | 7EE0C2711A7A812E0067E0BE /* ARDMessageResponse+Internal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "ARDMessageResponse+Internal.h"; path = "webrtc/src/talk/examples/objc/AppRTCDemo/ARDMessageResponse+Internal.h"; sourceTree = SOURCE_ROOT; }; 103 | 7EE0C2721A7A812E0067E0BE /* ARDRoomServerClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ARDRoomServerClient.h; path = webrtc/src/talk/examples/objc/AppRTCDemo/ARDRoomServerClient.h; sourceTree = SOURCE_ROOT; }; 104 | 7EE0C2731A7A812E0067E0BE /* ARDSignalingChannel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ARDSignalingChannel.h; path = webrtc/src/talk/examples/objc/AppRTCDemo/ARDSignalingChannel.h; sourceTree = SOURCE_ROOT; }; 105 | 7EE0C2741A7A812E0067E0BE /* ARDSignalingMessage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ARDSignalingMessage.h; path = webrtc/src/talk/examples/objc/AppRTCDemo/ARDSignalingMessage.h; sourceTree = SOURCE_ROOT; }; 106 | 7EE0C2751A7A812E0067E0BE /* ARDSignalingMessage.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = ARDSignalingMessage.m; path = webrtc/src/talk/examples/objc/AppRTCDemo/ARDSignalingMessage.m; sourceTree = SOURCE_ROOT; }; 107 | 7EE0C2761A7A812E0067E0BE /* ARDTURNClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ARDTURNClient.h; path = webrtc/src/talk/examples/objc/AppRTCDemo/ARDTURNClient.h; sourceTree = SOURCE_ROOT; }; 108 | 7EE0C2771A7A812E0067E0BE /* ARDUtilities.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ARDUtilities.h; path = webrtc/src/talk/examples/objc/AppRTCDemo/ARDUtilities.h; sourceTree = SOURCE_ROOT; }; 109 | 7EE0C2781A7A812E0067E0BE /* ARDUtilities.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = ARDUtilities.m; path = webrtc/src/talk/examples/objc/AppRTCDemo/ARDUtilities.m; sourceTree = SOURCE_ROOT; }; 110 | 7EE0C2791A7A812E0067E0BE /* ARDWebSocketChannel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ARDWebSocketChannel.h; path = webrtc/src/talk/examples/objc/AppRTCDemo/ARDWebSocketChannel.h; sourceTree = SOURCE_ROOT; }; 111 | 7EE0C27A1A7A812E0067E0BE /* ARDWebSocketChannel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = ARDWebSocketChannel.m; path = webrtc/src/talk/examples/objc/AppRTCDemo/ARDWebSocketChannel.m; sourceTree = SOURCE_ROOT; }; 112 | 7EE0C27B1A7A812E0067E0BE /* RTCICECandidate+JSON.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "RTCICECandidate+JSON.h"; path = "webrtc/src/talk/examples/objc/AppRTCDemo/RTCICECandidate+JSON.h"; sourceTree = SOURCE_ROOT; }; 113 | 7EE0C27C1A7A812E0067E0BE /* RTCICECandidate+JSON.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = "RTCICECandidate+JSON.m"; path = "webrtc/src/talk/examples/objc/AppRTCDemo/RTCICECandidate+JSON.m"; sourceTree = SOURCE_ROOT; }; 114 | 7EE0C27D1A7A812E0067E0BE /* RTCICEServer+JSON.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "RTCICEServer+JSON.h"; path = "webrtc/src/talk/examples/objc/AppRTCDemo/RTCICEServer+JSON.h"; sourceTree = SOURCE_ROOT; }; 115 | 7EE0C27E1A7A812E0067E0BE /* RTCICEServer+JSON.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = "RTCICEServer+JSON.m"; path = "webrtc/src/talk/examples/objc/AppRTCDemo/RTCICEServer+JSON.m"; sourceTree = SOURCE_ROOT; }; 116 | 7EE0C27F1A7A812E0067E0BE /* RTCMediaConstraints+JSON.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "RTCMediaConstraints+JSON.h"; path = "webrtc/src/talk/examples/objc/AppRTCDemo/RTCMediaConstraints+JSON.h"; sourceTree = SOURCE_ROOT; }; 117 | 7EE0C2801A7A812E0067E0BE /* RTCMediaConstraints+JSON.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = "RTCMediaConstraints+JSON.m"; path = "webrtc/src/talk/examples/objc/AppRTCDemo/RTCMediaConstraints+JSON.m"; sourceTree = SOURCE_ROOT; }; 118 | 7EE0C2811A7A812E0067E0BE /* RTCSessionDescription+JSON.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "RTCSessionDescription+JSON.h"; path = "webrtc/src/talk/examples/objc/AppRTCDemo/RTCSessionDescription+JSON.h"; sourceTree = SOURCE_ROOT; }; 119 | 7EE0C2821A7A812E0067E0BE /* RTCSessionDescription+JSON.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = "RTCSessionDescription+JSON.m"; path = "webrtc/src/talk/examples/objc/AppRTCDemo/RTCSessionDescription+JSON.m"; sourceTree = SOURCE_ROOT; }; 120 | 7EE0C28E1A7A814C0067E0BE /* ARDAppClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ARDAppClient.h; path = webrtc/src/talk/examples/objc/AppRTCDemo/ARDAppClient.h; sourceTree = SOURCE_ROOT; }; 121 | 7EE0C28F1A7A814C0067E0BE /* ARDAppClient.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = ARDAppClient.m; path = webrtc/src/talk/examples/objc/AppRTCDemo/ARDAppClient.m; sourceTree = SOURCE_ROOT; }; 122 | 7EE0C2911A7A815F0067E0BE /* AppRTCDemo-Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "AppRTCDemo-Prefix.pch"; path = "webrtc/src/talk/examples/objc/AppRTCDemo/ios/AppRTCDemo-Prefix.pch"; sourceTree = SOURCE_ROOT; }; 123 | 7EE0C2921A7A815F0067E0BE /* ARDAppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ARDAppDelegate.h; path = webrtc/src/talk/examples/objc/AppRTCDemo/ios/ARDAppDelegate.h; sourceTree = SOURCE_ROOT; }; 124 | 7EE0C2931A7A815F0067E0BE /* ARDAppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = ARDAppDelegate.m; path = webrtc/src/talk/examples/objc/AppRTCDemo/ios/ARDAppDelegate.m; sourceTree = SOURCE_ROOT; }; 125 | 7EE0C2941A7A815F0067E0BE /* ARDMainView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ARDMainView.h; path = webrtc/src/talk/examples/objc/AppRTCDemo/ios/ARDMainView.h; sourceTree = SOURCE_ROOT; }; 126 | 7EE0C2951A7A815F0067E0BE /* ARDMainView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = ARDMainView.m; path = webrtc/src/talk/examples/objc/AppRTCDemo/ios/ARDMainView.m; sourceTree = SOURCE_ROOT; }; 127 | 7EE0C2961A7A815F0067E0BE /* ARDMainViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ARDMainViewController.h; path = webrtc/src/talk/examples/objc/AppRTCDemo/ios/ARDMainViewController.h; sourceTree = SOURCE_ROOT; }; 128 | 7EE0C2971A7A815F0067E0BE /* ARDMainViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = ARDMainViewController.m; path = webrtc/src/talk/examples/objc/AppRTCDemo/ios/ARDMainViewController.m; sourceTree = SOURCE_ROOT; }; 129 | 7EE0C2981A7A815F0067E0BE /* ARDVideoCallView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ARDVideoCallView.h; path = webrtc/src/talk/examples/objc/AppRTCDemo/ios/ARDVideoCallView.h; sourceTree = SOURCE_ROOT; }; 130 | 7EE0C2991A7A815F0067E0BE /* ARDVideoCallView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = ARDVideoCallView.m; path = webrtc/src/talk/examples/objc/AppRTCDemo/ios/ARDVideoCallView.m; sourceTree = SOURCE_ROOT; }; 131 | 7EE0C29A1A7A815F0067E0BE /* ARDVideoCallViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ARDVideoCallViewController.h; path = webrtc/src/talk/examples/objc/AppRTCDemo/ios/ARDVideoCallViewController.h; sourceTree = SOURCE_ROOT; }; 132 | 7EE0C29B1A7A815F0067E0BE /* ARDVideoCallViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = ARDVideoCallViewController.m; path = webrtc/src/talk/examples/objc/AppRTCDemo/ios/ARDVideoCallViewController.m; sourceTree = SOURCE_ROOT; }; 133 | 7EE0C29C1A7A815F0067E0BE /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = webrtc/src/talk/examples/objc/AppRTCDemo/ios/Info.plist; sourceTree = SOURCE_ROOT; }; 134 | 7EE0C29D1A7A815F0067E0BE /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = webrtc/src/talk/examples/objc/AppRTCDemo/ios/main.m; sourceTree = SOURCE_ROOT; }; 135 | 7EE0C29F1A7A815F0067E0BE /* Default-568h.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Default-568h.png"; sourceTree = ""; }; 136 | 7EE0C2A01A7A815F0067E0BE /* Roboto-Regular.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Roboto-Regular.ttf"; sourceTree = ""; }; 137 | 7EE0C2A11A7A815F0067E0BE /* ic_call_end_black_24dp.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ic_call_end_black_24dp.png; sourceTree = ""; }; 138 | 7EE0C2A21A7A815F0067E0BE /* ic_call_end_black_24dp@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "ic_call_end_black_24dp@2x.png"; sourceTree = ""; }; 139 | 7EE0C2A31A7A815F0067E0BE /* ic_clear_black_24dp.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ic_clear_black_24dp.png; sourceTree = ""; }; 140 | 7EE0C2A41A7A815F0067E0BE /* ic_clear_black_24dp@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "ic_clear_black_24dp@2x.png"; sourceTree = ""; }; 141 | 7EE0C2A51A7A815F0067E0BE /* UIImage+ARDUtilities.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "UIImage+ARDUtilities.h"; path = "webrtc/src/talk/examples/objc/AppRTCDemo/ios/UIImage+ARDUtilities.h"; sourceTree = SOURCE_ROOT; }; 142 | 7EE0C2A61A7A815F0067E0BE /* UIImage+ARDUtilities.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = "UIImage+ARDUtilities.m"; path = "webrtc/src/talk/examples/objc/AppRTCDemo/ios/UIImage+ARDUtilities.m"; sourceTree = SOURCE_ROOT; }; 143 | C08538F31952400E00C7A2E7 /* clone.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = clone.sh; sourceTree = ""; }; 144 | C08538F4195240BB00C7A2E7 /* pull.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = pull.sh; sourceTree = ""; }; 145 | C08538F5195240F800C7A2E7 /* build_webrtc.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = build_webrtc.sh; sourceTree = ""; }; 146 | C088209A1952345000A12E2E /* dance.sh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = dance.sh; sourceTree = ""; }; 147 | C095E5EB1952485F00B9FAA0 /* libWebRTC-LATEST-Universal-Debug.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = "libWebRTC-LATEST-Universal-Debug.a"; path = "webrtc/libWebRTC-LATEST-Universal-Debug.a"; sourceTree = ""; }; 148 | C0A129331951F48300C523D2 /* libWebRTC.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libWebRTC.a; sourceTree = BUILT_PRODUCTS_DIR; }; 149 | C0A129361951F48300C523D2 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; 150 | C0A129441951F48300C523D2 /* XCTest.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = XCTest.framework; path = Library/Frameworks/XCTest.framework; sourceTree = DEVELOPER_DIR; }; 151 | C0A129F81951FA0100C523D2 /* build.sh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = build.sh; sourceTree = ""; }; 152 | C0A129F91952015900C523D2 /* AudioUnit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioUnit.framework; path = System/Library/Frameworks/AudioUnit.framework; sourceTree = SDKROOT; }; 153 | C0A129FA1952015900C523D2 /* AVFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = System/Library/Frameworks/AVFoundation.framework; sourceTree = SDKROOT; }; 154 | C0A129FD195201E400C523D2 /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; }; 155 | C0A129FE195201E400C523D2 /* CoreMedia.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreMedia.framework; path = System/Library/Frameworks/CoreMedia.framework; sourceTree = SDKROOT; }; 156 | C0A129FF195201E400C523D2 /* GLKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = GLKit.framework; path = System/Library/Frameworks/GLKit.framework; sourceTree = SDKROOT; }; 157 | C0A12A00195201E400C523D2 /* libc.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libc.dylib; path = usr/lib/libc.dylib; sourceTree = SDKROOT; }; 158 | C0A12A01195201E400C523D2 /* libsqlite3.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libsqlite3.dylib; path = usr/lib/libsqlite3.dylib; sourceTree = SDKROOT; }; 159 | C0A12A02195201E400C523D2 /* libstdc++.6.0.9.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = "libstdc++.6.0.9.dylib"; path = "usr/lib/libstdc++.6.0.9.dylib"; sourceTree = SDKROOT; }; 160 | C0A12A03195201E400C523D2 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; }; 161 | C0A12AB4195202A600C523D2 /* AppRTCDemo.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = AppRTCDemo.app; sourceTree = BUILT_PRODUCTS_DIR; }; 162 | C0A12ABA195202A600C523D2 /* AppRTCDemo-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "AppRTCDemo-Info.plist"; sourceTree = ""; }; 163 | C0A12ABC195202A600C523D2 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; }; 164 | C0A12ABE195202A600C523D2 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; 165 | C0A12AC0195202A600C523D2 /* AppRTCDemo-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "AppRTCDemo-Prefix.pch"; sourceTree = ""; }; 166 | C0A12AC4195202A600C523D2 /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = ""; }; 167 | C0C3A6D71A13FBA20062D421 /* RTCAudioSource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RTCAudioSource.h; path = webrtc/src/talk/app/webrtc/objc/public/RTCAudioSource.h; sourceTree = SOURCE_ROOT; }; 168 | C0C3A6D81A13FBA20062D421 /* RTCAudioTrack.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RTCAudioTrack.h; path = webrtc/src/talk/app/webrtc/objc/public/RTCAudioTrack.h; sourceTree = SOURCE_ROOT; }; 169 | C0C3A6D91A13FBA20062D421 /* RTCDataChannel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RTCDataChannel.h; path = webrtc/src/talk/app/webrtc/objc/public/RTCDataChannel.h; sourceTree = SOURCE_ROOT; }; 170 | C0C3A6DA1A13FBA20062D421 /* RTCEAGLVideoView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RTCEAGLVideoView.h; path = webrtc/src/talk/app/webrtc/objc/public/RTCEAGLVideoView.h; sourceTree = SOURCE_ROOT; }; 171 | C0C3A6DB1A13FBA20062D421 /* RTCI420Frame.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RTCI420Frame.h; path = webrtc/src/talk/app/webrtc/objc/public/RTCI420Frame.h; sourceTree = SOURCE_ROOT; }; 172 | C0C3A6DC1A13FBA20062D421 /* RTCICECandidate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RTCICECandidate.h; path = webrtc/src/talk/app/webrtc/objc/public/RTCICECandidate.h; sourceTree = SOURCE_ROOT; }; 173 | C0C3A6DD1A13FBA20062D421 /* RTCICEServer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RTCICEServer.h; path = webrtc/src/talk/app/webrtc/objc/public/RTCICEServer.h; sourceTree = SOURCE_ROOT; }; 174 | C0C3A6DE1A13FBA20062D421 /* RTCMediaConstraints.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RTCMediaConstraints.h; path = webrtc/src/talk/app/webrtc/objc/public/RTCMediaConstraints.h; sourceTree = SOURCE_ROOT; }; 175 | C0C3A6DF1A13FBA20062D421 /* RTCMediaSource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RTCMediaSource.h; path = webrtc/src/talk/app/webrtc/objc/public/RTCMediaSource.h; sourceTree = SOURCE_ROOT; }; 176 | C0C3A6E01A13FBA20062D421 /* RTCMediaStream.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RTCMediaStream.h; path = webrtc/src/talk/app/webrtc/objc/public/RTCMediaStream.h; sourceTree = SOURCE_ROOT; }; 177 | C0C3A6E11A13FBA20062D421 /* RTCMediaStreamTrack.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RTCMediaStreamTrack.h; path = webrtc/src/talk/app/webrtc/objc/public/RTCMediaStreamTrack.h; sourceTree = SOURCE_ROOT; }; 178 | C0C3A6E21A13FBA20062D421 /* RTCNSGLVideoView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RTCNSGLVideoView.h; path = webrtc/src/talk/app/webrtc/objc/public/RTCNSGLVideoView.h; sourceTree = SOURCE_ROOT; }; 179 | C0C3A6E31A13FBA20062D421 /* RTCOpenGLVideoRenderer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RTCOpenGLVideoRenderer.h; path = webrtc/src/talk/app/webrtc/objc/public/RTCOpenGLVideoRenderer.h; sourceTree = SOURCE_ROOT; }; 180 | C0C3A6E41A13FBA20062D421 /* RTCPair.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RTCPair.h; path = webrtc/src/talk/app/webrtc/objc/public/RTCPair.h; sourceTree = SOURCE_ROOT; }; 181 | C0C3A6E51A13FBA20062D421 /* RTCPeerConnection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RTCPeerConnection.h; path = webrtc/src/talk/app/webrtc/objc/public/RTCPeerConnection.h; sourceTree = SOURCE_ROOT; }; 182 | C0C3A6E61A13FBA20062D421 /* RTCPeerConnectionDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RTCPeerConnectionDelegate.h; path = webrtc/src/talk/app/webrtc/objc/public/RTCPeerConnectionDelegate.h; sourceTree = SOURCE_ROOT; }; 183 | C0C3A6E71A13FBA20062D421 /* RTCPeerConnectionFactory.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RTCPeerConnectionFactory.h; path = webrtc/src/talk/app/webrtc/objc/public/RTCPeerConnectionFactory.h; sourceTree = SOURCE_ROOT; }; 184 | C0C3A6E81A13FBA20062D421 /* RTCSessionDescription.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RTCSessionDescription.h; path = webrtc/src/talk/app/webrtc/objc/public/RTCSessionDescription.h; sourceTree = SOURCE_ROOT; }; 185 | C0C3A6E91A13FBA20062D421 /* RTCSessionDescriptionDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RTCSessionDescriptionDelegate.h; path = webrtc/src/talk/app/webrtc/objc/public/RTCSessionDescriptionDelegate.h; sourceTree = SOURCE_ROOT; }; 186 | C0C3A6EA1A13FBA20062D421 /* RTCStatsDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RTCStatsDelegate.h; path = webrtc/src/talk/app/webrtc/objc/public/RTCStatsDelegate.h; sourceTree = SOURCE_ROOT; }; 187 | C0C3A6EB1A13FBA20062D421 /* RTCStatsReport.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RTCStatsReport.h; path = webrtc/src/talk/app/webrtc/objc/public/RTCStatsReport.h; sourceTree = SOURCE_ROOT; }; 188 | C0C3A6EC1A13FBA20062D421 /* RTCTypes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RTCTypes.h; path = webrtc/src/talk/app/webrtc/objc/public/RTCTypes.h; sourceTree = SOURCE_ROOT; }; 189 | C0C3A6ED1A13FBA20062D421 /* RTCVideoCapturer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RTCVideoCapturer.h; path = webrtc/src/talk/app/webrtc/objc/public/RTCVideoCapturer.h; sourceTree = SOURCE_ROOT; }; 190 | C0C3A6EE1A13FBA20062D421 /* RTCVideoRenderer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RTCVideoRenderer.h; path = webrtc/src/talk/app/webrtc/objc/public/RTCVideoRenderer.h; sourceTree = SOURCE_ROOT; }; 191 | C0C3A6EF1A13FBA20062D421 /* RTCVideoSource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RTCVideoSource.h; path = webrtc/src/talk/app/webrtc/objc/public/RTCVideoSource.h; sourceTree = SOURCE_ROOT; }; 192 | C0C3A6F01A13FBA20062D421 /* RTCVideoTrack.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RTCVideoTrack.h; path = webrtc/src/talk/app/webrtc/objc/public/RTCVideoTrack.h; sourceTree = SOURCE_ROOT; }; 193 | C0C3A6F31A13FBC80062D421 /* AppRTCDemo-Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "AppRTCDemo-Prefix.pch"; path = "webrtc/src/talk/examples/objc/AppRTCDemo/ios/AppRTCDemo-Prefix.pch"; sourceTree = SOURCE_ROOT; }; 194 | C0C3A6F91A13FBC80062D421 /* en */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = en; path = APPRTCViewController.xib; sourceTree = ""; }; 195 | C0C3A6FA1A13FBC80062D421 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = webrtc/src/talk/examples/objc/AppRTCDemo/ios/Info.plist; sourceTree = SOURCE_ROOT; }; 196 | C0C3A6FB1A13FBC80062D421 /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = webrtc/src/talk/examples/objc/AppRTCDemo/ios/main.m; sourceTree = SOURCE_ROOT; }; 197 | C0C3A7151A13FBFF0062D421 /* APPRTCAppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = APPRTCAppDelegate.h; path = webrtc/src/talk/examples/objc/AppRTCDemo/mac/APPRTCAppDelegate.h; sourceTree = SOURCE_ROOT; }; 198 | C0C3A7161A13FBFF0062D421 /* APPRTCAppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = APPRTCAppDelegate.m; path = webrtc/src/talk/examples/objc/AppRTCDemo/mac/APPRTCAppDelegate.m; sourceTree = SOURCE_ROOT; }; 199 | C0C3A7171A13FBFF0062D421 /* APPRTCViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = APPRTCViewController.h; path = webrtc/src/talk/examples/objc/AppRTCDemo/mac/APPRTCViewController.h; sourceTree = SOURCE_ROOT; }; 200 | C0C3A7181A13FBFF0062D421 /* APPRTCViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = APPRTCViewController.m; path = webrtc/src/talk/examples/objc/AppRTCDemo/mac/APPRTCViewController.m; sourceTree = SOURCE_ROOT; }; 201 | C0C3A7191A13FBFF0062D421 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = webrtc/src/talk/examples/objc/AppRTCDemo/mac/Info.plist; sourceTree = SOURCE_ROOT; }; 202 | C0C3A71A1A13FBFF0062D421 /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = webrtc/src/talk/examples/objc/AppRTCDemo/mac/main.m; sourceTree = SOURCE_ROOT; }; 203 | C0C3A7221A13FD680062D421 /* libstdc++.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = "libstdc++.dylib"; path = "usr/lib/libstdc++.dylib"; sourceTree = SDKROOT; }; 204 | /* End PBXFileReference section */ 205 | 206 | /* Begin PBXFrameworksBuildPhase section */ 207 | C0A129301951F48300C523D2 /* Frameworks */ = { 208 | isa = PBXFrameworksBuildPhase; 209 | buildActionMask = 2147483647; 210 | files = ( 211 | C0A129371951F48300C523D2 /* Foundation.framework in Frameworks */, 212 | C0A129FB1952015900C523D2 /* AudioUnit.framework in Frameworks */, 213 | C0A129FC1952015900C523D2 /* AVFoundation.framework in Frameworks */, 214 | C0A12A04195201E400C523D2 /* CoreGraphics.framework in Frameworks */, 215 | C0A12A05195201E400C523D2 /* CoreMedia.framework in Frameworks */, 216 | C0A12A06195201E400C523D2 /* GLKit.framework in Frameworks */, 217 | C0A12A07195201E400C523D2 /* libc.dylib in Frameworks */, 218 | C0A12A08195201E400C523D2 /* libsqlite3.dylib in Frameworks */, 219 | C0A12A09195201E400C523D2 /* libstdc++.6.0.9.dylib in Frameworks */, 220 | C095E5ED1952488200B9FAA0 /* libWebRTC-LATEST-Universal-Debug.a in Frameworks */, 221 | C0A12A0A195201E400C523D2 /* UIKit.framework in Frameworks */, 222 | ); 223 | runOnlyForDeploymentPostprocessing = 0; 224 | }; 225 | C0A12AB1195202A600C523D2 /* Frameworks */ = { 226 | isa = PBXFrameworksBuildPhase; 227 | buildActionMask = 2147483647; 228 | files = ( 229 | 7E5B77B01A7A986600EF3056 /* libicucore.dylib in Frameworks */, 230 | C0C3A7231A13FD680062D421 /* libstdc++.dylib in Frameworks */, 231 | C0A12AB5195202A600C523D2 /* Foundation.framework in Frameworks */, 232 | C0A12BC71952064000C523D2 /* AVFoundation.framework in Frameworks */, 233 | C0A12AB6195202A600C523D2 /* CoreGraphics.framework in Frameworks */, 234 | C0A12BC11952062E00C523D2 /* CoreMedia.framework in Frameworks */, 235 | C0A12BC21952063100C523D2 /* GLKit.framework in Frameworks */, 236 | C0A12BC31952063300C523D2 /* libc.dylib in Frameworks */, 237 | C0A12BC41952063600C523D2 /* libsqlite3.dylib in Frameworks */, 238 | C095E5EC1952485F00B9FAA0 /* libWebRTC-LATEST-Universal-Debug.a in Frameworks */, 239 | C0A12AB7195202A600C523D2 /* UIKit.framework in Frameworks */, 240 | ); 241 | runOnlyForDeploymentPostprocessing = 0; 242 | }; 243 | /* End PBXFrameworksBuildPhase section */ 244 | 245 | /* Begin PBXGroup section */ 246 | 7E5B77A81A7A84A700EF3056 /* third_party */ = { 247 | isa = PBXGroup; 248 | children = ( 249 | 7E5B77A91A7A84A700EF3056 /* SocketRocket */, 250 | ); 251 | name = third_party; 252 | path = webrtc/src/talk/examples/objc/AppRTCDemo/third_party; 253 | sourceTree = SOURCE_ROOT; 254 | }; 255 | 7E5B77A91A7A84A700EF3056 /* SocketRocket */ = { 256 | isa = PBXGroup; 257 | children = ( 258 | 7E5B77AA1A7A84A700EF3056 /* LICENSE */, 259 | 7E5B77AB1A7A84A700EF3056 /* SRWebSocket.h */, 260 | 7E5B77AC1A7A84A700EF3056 /* SRWebSocket.m */, 261 | ); 262 | path = SocketRocket; 263 | sourceTree = ""; 264 | }; 265 | 7EE0C29E1A7A815F0067E0BE /* resources */ = { 266 | isa = PBXGroup; 267 | children = ( 268 | 7EE0C29F1A7A815F0067E0BE /* Default-568h.png */, 269 | 7EE0C2A01A7A815F0067E0BE /* Roboto-Regular.ttf */, 270 | 7EE0C2A11A7A815F0067E0BE /* ic_call_end_black_24dp.png */, 271 | 7EE0C2A21A7A815F0067E0BE /* ic_call_end_black_24dp@2x.png */, 272 | 7EE0C2A31A7A815F0067E0BE /* ic_clear_black_24dp.png */, 273 | 7EE0C2A41A7A815F0067E0BE /* ic_clear_black_24dp@2x.png */, 274 | ); 275 | name = resources; 276 | path = webrtc/src/talk/examples/objc/AppRTCDemo/ios/resources; 277 | sourceTree = SOURCE_ROOT; 278 | }; 279 | C0A1292A1951F48300C523D2 = { 280 | isa = PBXGroup; 281 | children = ( 282 | C0A129F61951F72E00C523D2 /* Build WebRTC */, 283 | C0A129381951F48300C523D2 /* Headers */, 284 | C0A12AB8195202A600C523D2 /* AppRTCDemo */, 285 | C0A129351951F48300C523D2 /* Frameworks */, 286 | C0A129341951F48300C523D2 /* Products */, 287 | ); 288 | sourceTree = ""; 289 | }; 290 | C0A129341951F48300C523D2 /* Products */ = { 291 | isa = PBXGroup; 292 | children = ( 293 | C0A129331951F48300C523D2 /* libWebRTC.a */, 294 | C0A12AB4195202A600C523D2 /* AppRTCDemo.app */, 295 | ); 296 | name = Products; 297 | sourceTree = ""; 298 | }; 299 | C0A129351951F48300C523D2 /* Frameworks */ = { 300 | isa = PBXGroup; 301 | children = ( 302 | 7E5B77AF1A7A986600EF3056 /* libicucore.dylib */, 303 | C0C3A7221A13FD680062D421 /* libstdc++.dylib */, 304 | C095E5EB1952485F00B9FAA0 /* libWebRTC-LATEST-Universal-Debug.a */, 305 | C0A129FD195201E400C523D2 /* CoreGraphics.framework */, 306 | C0A129FE195201E400C523D2 /* CoreMedia.framework */, 307 | C0A129FF195201E400C523D2 /* GLKit.framework */, 308 | C0A12A00195201E400C523D2 /* libc.dylib */, 309 | C0A12A01195201E400C523D2 /* libsqlite3.dylib */, 310 | C0A12A02195201E400C523D2 /* libstdc++.6.0.9.dylib */, 311 | C0A12A03195201E400C523D2 /* UIKit.framework */, 312 | C0A129F91952015900C523D2 /* AudioUnit.framework */, 313 | C0A129FA1952015900C523D2 /* AVFoundation.framework */, 314 | C0A129361951F48300C523D2 /* Foundation.framework */, 315 | C0A129441951F48300C523D2 /* XCTest.framework */, 316 | ); 317 | name = Frameworks; 318 | sourceTree = ""; 319 | }; 320 | C0A129381951F48300C523D2 /* Headers */ = { 321 | isa = PBXGroup; 322 | children = ( 323 | C0C3A6D71A13FBA20062D421 /* RTCAudioSource.h */, 324 | C0C3A6D81A13FBA20062D421 /* RTCAudioTrack.h */, 325 | C0C3A6D91A13FBA20062D421 /* RTCDataChannel.h */, 326 | C0C3A6DA1A13FBA20062D421 /* RTCEAGLVideoView.h */, 327 | C0C3A6DB1A13FBA20062D421 /* RTCI420Frame.h */, 328 | C0C3A6DC1A13FBA20062D421 /* RTCICECandidate.h */, 329 | C0C3A6DD1A13FBA20062D421 /* RTCICEServer.h */, 330 | C0C3A6DE1A13FBA20062D421 /* RTCMediaConstraints.h */, 331 | C0C3A6DF1A13FBA20062D421 /* RTCMediaSource.h */, 332 | C0C3A6E01A13FBA20062D421 /* RTCMediaStream.h */, 333 | C0C3A6E11A13FBA20062D421 /* RTCMediaStreamTrack.h */, 334 | C0C3A6E21A13FBA20062D421 /* RTCNSGLVideoView.h */, 335 | C0C3A6E31A13FBA20062D421 /* RTCOpenGLVideoRenderer.h */, 336 | C0C3A6E41A13FBA20062D421 /* RTCPair.h */, 337 | C0C3A6E51A13FBA20062D421 /* RTCPeerConnection.h */, 338 | C0C3A6E61A13FBA20062D421 /* RTCPeerConnectionDelegate.h */, 339 | C0C3A6E71A13FBA20062D421 /* RTCPeerConnectionFactory.h */, 340 | C0C3A6E81A13FBA20062D421 /* RTCSessionDescription.h */, 341 | C0C3A6E91A13FBA20062D421 /* RTCSessionDescriptionDelegate.h */, 342 | C0C3A6EA1A13FBA20062D421 /* RTCStatsDelegate.h */, 343 | C0C3A6EB1A13FBA20062D421 /* RTCStatsReport.h */, 344 | C0C3A6EC1A13FBA20062D421 /* RTCTypes.h */, 345 | C0C3A6ED1A13FBA20062D421 /* RTCVideoCapturer.h */, 346 | C0C3A6EE1A13FBA20062D421 /* RTCVideoRenderer.h */, 347 | C0C3A6EF1A13FBA20062D421 /* RTCVideoSource.h */, 348 | C0C3A6F01A13FBA20062D421 /* RTCVideoTrack.h */, 349 | ); 350 | name = Headers; 351 | path = WebRTC; 352 | sourceTree = ""; 353 | }; 354 | C0A129F61951F72E00C523D2 /* Build WebRTC */ = { 355 | isa = PBXGroup; 356 | children = ( 357 | C0A129F81951FA0100C523D2 /* build.sh */, 358 | C088209A1952345000A12E2E /* dance.sh */, 359 | C08538F31952400E00C7A2E7 /* clone.sh */, 360 | C08538F4195240BB00C7A2E7 /* pull.sh */, 361 | C08538F5195240F800C7A2E7 /* build_webrtc.sh */, 362 | ); 363 | name = "Build WebRTC"; 364 | sourceTree = ""; 365 | }; 366 | C0A12AB8195202A600C523D2 /* AppRTCDemo */ = { 367 | isa = PBXGroup; 368 | children = ( 369 | 7EE0C28E1A7A814C0067E0BE /* ARDAppClient.h */, 370 | 7EE0C28F1A7A814C0067E0BE /* ARDAppClient.m */, 371 | 7EE0C2671A7A812E0067E0BE /* ARDAppClient+Internal.h */, 372 | 7EE0C2681A7A812E0067E0BE /* ARDAppEngineClient.h */, 373 | 7EE0C2691A7A812E0067E0BE /* ARDAppEngineClient.m */, 374 | 7EE0C26A1A7A812E0067E0BE /* ARDCEODTURNClient.h */, 375 | 7EE0C26B1A7A812E0067E0BE /* ARDCEODTURNClient.m */, 376 | 7EE0C26C1A7A812E0067E0BE /* ARDJoinResponse.h */, 377 | 7EE0C26D1A7A812E0067E0BE /* ARDJoinResponse.m */, 378 | 7EE0C26E1A7A812E0067E0BE /* ARDJoinResponse+Internal.h */, 379 | 7EE0C26F1A7A812E0067E0BE /* ARDMessageResponse.h */, 380 | 7EE0C2701A7A812E0067E0BE /* ARDMessageResponse.m */, 381 | 7EE0C2711A7A812E0067E0BE /* ARDMessageResponse+Internal.h */, 382 | 7EE0C2721A7A812E0067E0BE /* ARDRoomServerClient.h */, 383 | 7EE0C2731A7A812E0067E0BE /* ARDSignalingChannel.h */, 384 | 7EE0C2741A7A812E0067E0BE /* ARDSignalingMessage.h */, 385 | 7EE0C2751A7A812E0067E0BE /* ARDSignalingMessage.m */, 386 | 7EE0C2761A7A812E0067E0BE /* ARDTURNClient.h */, 387 | 7EE0C2771A7A812E0067E0BE /* ARDUtilities.h */, 388 | 7EE0C2781A7A812E0067E0BE /* ARDUtilities.m */, 389 | 7EE0C2791A7A812E0067E0BE /* ARDWebSocketChannel.h */, 390 | 7EE0C27A1A7A812E0067E0BE /* ARDWebSocketChannel.m */, 391 | 7EE0C27B1A7A812E0067E0BE /* RTCICECandidate+JSON.h */, 392 | 7EE0C27C1A7A812E0067E0BE /* RTCICECandidate+JSON.m */, 393 | 7EE0C27D1A7A812E0067E0BE /* RTCICEServer+JSON.h */, 394 | 7EE0C27E1A7A812E0067E0BE /* RTCICEServer+JSON.m */, 395 | 7EE0C27F1A7A812E0067E0BE /* RTCMediaConstraints+JSON.h */, 396 | 7EE0C2801A7A812E0067E0BE /* RTCMediaConstraints+JSON.m */, 397 | 7EE0C2811A7A812E0067E0BE /* RTCSessionDescription+JSON.h */, 398 | 7EE0C2821A7A812E0067E0BE /* RTCSessionDescription+JSON.m */, 399 | C0A12AE5195202FF00C523D2 /* ios */, 400 | C0A12AF1195202FF00C523D2 /* mac */, 401 | 7E5B77A81A7A84A700EF3056 /* third_party */, 402 | C0A12AC4195202A600C523D2 /* Images.xcassets */, 403 | C0A12AB9195202A600C523D2 /* Supporting Files */, 404 | ); 405 | path = AppRTCDemo; 406 | sourceTree = ""; 407 | }; 408 | C0A12AB9195202A600C523D2 /* Supporting Files */ = { 409 | isa = PBXGroup; 410 | children = ( 411 | C0A12ABA195202A600C523D2 /* AppRTCDemo-Info.plist */, 412 | C0A12ABB195202A600C523D2 /* InfoPlist.strings */, 413 | C0A12ABE195202A600C523D2 /* main.m */, 414 | C0A12AC0195202A600C523D2 /* AppRTCDemo-Prefix.pch */, 415 | ); 416 | name = "Supporting Files"; 417 | sourceTree = ""; 418 | }; 419 | C0A12AE5195202FF00C523D2 /* ios */ = { 420 | isa = PBXGroup; 421 | children = ( 422 | 7EE0C2911A7A815F0067E0BE /* AppRTCDemo-Prefix.pch */, 423 | 7EE0C2921A7A815F0067E0BE /* ARDAppDelegate.h */, 424 | 7EE0C2931A7A815F0067E0BE /* ARDAppDelegate.m */, 425 | 7EE0C2941A7A815F0067E0BE /* ARDMainView.h */, 426 | 7EE0C2951A7A815F0067E0BE /* ARDMainView.m */, 427 | 7EE0C2961A7A815F0067E0BE /* ARDMainViewController.h */, 428 | 7EE0C2971A7A815F0067E0BE /* ARDMainViewController.m */, 429 | 7EE0C2981A7A815F0067E0BE /* ARDVideoCallView.h */, 430 | 7EE0C2991A7A815F0067E0BE /* ARDVideoCallView.m */, 431 | 7EE0C29A1A7A815F0067E0BE /* ARDVideoCallViewController.h */, 432 | 7EE0C29B1A7A815F0067E0BE /* ARDVideoCallViewController.m */, 433 | 7EE0C29C1A7A815F0067E0BE /* Info.plist */, 434 | 7EE0C29D1A7A815F0067E0BE /* main.m */, 435 | 7EE0C29E1A7A815F0067E0BE /* resources */, 436 | 7EE0C2A51A7A815F0067E0BE /* UIImage+ARDUtilities.h */, 437 | 7EE0C2A61A7A815F0067E0BE /* UIImage+ARDUtilities.m */, 438 | C0C3A6F31A13FBC80062D421 /* AppRTCDemo-Prefix.pch */, 439 | C0C3A6F71A13FBC80062D421 /* en.lproj */, 440 | C0C3A6FA1A13FBC80062D421 /* Info.plist */, 441 | C0C3A6FB1A13FBC80062D421 /* main.m */, 442 | ); 443 | name = ios; 444 | path = webrtc/trunk/talk/examples/objc/AppRTCDemo/ios; 445 | sourceTree = SOURCE_ROOT; 446 | }; 447 | C0A12AF1195202FF00C523D2 /* mac */ = { 448 | isa = PBXGroup; 449 | children = ( 450 | C0C3A7151A13FBFF0062D421 /* APPRTCAppDelegate.h */, 451 | C0C3A7161A13FBFF0062D421 /* APPRTCAppDelegate.m */, 452 | C0C3A7171A13FBFF0062D421 /* APPRTCViewController.h */, 453 | C0C3A7181A13FBFF0062D421 /* APPRTCViewController.m */, 454 | C0C3A7191A13FBFF0062D421 /* Info.plist */, 455 | C0C3A71A1A13FBFF0062D421 /* main.m */, 456 | ); 457 | name = mac; 458 | path = webrtc/trunk/talk/examples/objc/AppRTCDemo/mac; 459 | sourceTree = SOURCE_ROOT; 460 | }; 461 | C0C3A6F71A13FBC80062D421 /* en.lproj */ = { 462 | isa = PBXGroup; 463 | children = ( 464 | C0C3A6F81A13FBC80062D421 /* APPRTCViewController.xib */, 465 | ); 466 | name = en.lproj; 467 | path = webrtc/src/talk/examples/objc/AppRTCDemo/ios/en.lproj; 468 | sourceTree = SOURCE_ROOT; 469 | }; 470 | /* End PBXGroup section */ 471 | 472 | /* Begin PBXLegacyTarget section */ 473 | C0A129F21951F6B800C523D2 /* Build PeerConnection */ = { 474 | isa = PBXLegacyTarget; 475 | buildArgumentsString = "$(ACTION)"; 476 | buildConfigurationList = C0A129F31951F6B800C523D2 /* Build configuration list for PBXLegacyTarget "Build PeerConnection" */; 477 | buildPhases = ( 478 | ); 479 | buildToolPath = /bin/sh; 480 | buildWorkingDirectory = ""; 481 | dependencies = ( 482 | ); 483 | name = "Build PeerConnection"; 484 | passBuildSettingsInEnvironment = 1; 485 | productName = "Build PeerConnection"; 486 | }; 487 | /* End PBXLegacyTarget section */ 488 | 489 | /* Begin PBXNativeTarget section */ 490 | C0A129321951F48300C523D2 /* WebRTC */ = { 491 | isa = PBXNativeTarget; 492 | buildConfigurationList = C0A129561951F48300C523D2 /* Build configuration list for PBXNativeTarget "WebRTC" */; 493 | buildPhases = ( 494 | C0A1292F1951F48300C523D2 /* Sources */, 495 | C0A129301951F48300C523D2 /* Frameworks */, 496 | C0A129311951F48300C523D2 /* CopyFiles */, 497 | ); 498 | buildRules = ( 499 | ); 500 | dependencies = ( 501 | ); 502 | name = WebRTC; 503 | productName = WebRTC; 504 | productReference = C0A129331951F48300C523D2 /* libWebRTC.a */; 505 | productType = "com.apple.product-type.library.static"; 506 | }; 507 | C0A12AB3195202A600C523D2 /* AppRTCDemo */ = { 508 | isa = PBXNativeTarget; 509 | buildConfigurationList = C0A12AD8195202A600C523D2 /* Build configuration list for PBXNativeTarget "AppRTCDemo" */; 510 | buildPhases = ( 511 | C0A12AB0195202A600C523D2 /* Sources */, 512 | C0A12AB1195202A600C523D2 /* Frameworks */, 513 | C0A12AB2195202A600C523D2 /* Resources */, 514 | ); 515 | buildRules = ( 516 | ); 517 | dependencies = ( 518 | C0A12B081952031800C523D2 /* PBXTargetDependency */, 519 | ); 520 | name = AppRTCDemo; 521 | productName = AppRTCDemo; 522 | productReference = C0A12AB4195202A600C523D2 /* AppRTCDemo.app */; 523 | productType = "com.apple.product-type.application"; 524 | }; 525 | /* End PBXNativeTarget section */ 526 | 527 | /* Begin PBXProject section */ 528 | C0A1292B1951F48300C523D2 /* Project object */ = { 529 | isa = PBXProject; 530 | attributes = { 531 | LastUpgradeCheck = 0610; 532 | ORGANIZATIONNAME = "Pristine, Inc"; 533 | }; 534 | buildConfigurationList = C0A1292E1951F48300C523D2 /* Build configuration list for PBXProject "WebRTC" */; 535 | compatibilityVersion = "Xcode 3.2"; 536 | developmentRegion = English; 537 | hasScannedForEncodings = 0; 538 | knownRegions = ( 539 | en, 540 | ); 541 | mainGroup = C0A1292A1951F48300C523D2; 542 | productRefGroup = C0A129341951F48300C523D2 /* Products */; 543 | projectDirPath = ""; 544 | projectRoot = ""; 545 | targets = ( 546 | C0A12AB3195202A600C523D2 /* AppRTCDemo */, 547 | C0A129321951F48300C523D2 /* WebRTC */, 548 | C0A129F21951F6B800C523D2 /* Build PeerConnection */, 549 | ); 550 | }; 551 | /* End PBXProject section */ 552 | 553 | /* Begin PBXResourcesBuildPhase section */ 554 | C0A12AB2195202A600C523D2 /* Resources */ = { 555 | isa = PBXResourcesBuildPhase; 556 | buildActionMask = 2147483647; 557 | files = ( 558 | 7EE0C2AE1A7A815F0067E0BE /* Default-568h.png in Resources */, 559 | 7EE0C2B21A7A815F0067E0BE /* ic_clear_black_24dp.png in Resources */, 560 | C0A12ABD195202A600C523D2 /* InfoPlist.strings in Resources */, 561 | C0A12AC5195202A600C523D2 /* Images.xcassets in Resources */, 562 | 7EE0C2B31A7A815F0067E0BE /* ic_clear_black_24dp@2x.png in Resources */, 563 | 7EE0C2B01A7A815F0067E0BE /* ic_call_end_black_24dp.png in Resources */, 564 | 7E5B77AD1A7A84A700EF3056 /* LICENSE in Resources */, 565 | C0C3A7031A13FBC80062D421 /* Info.plist in Resources */, 566 | 7EE0C2AF1A7A815F0067E0BE /* Roboto-Regular.ttf in Resources */, 567 | 7EE0C2B11A7A815F0067E0BE /* ic_call_end_black_24dp@2x.png in Resources */, 568 | ); 569 | runOnlyForDeploymentPostprocessing = 0; 570 | }; 571 | /* End PBXResourcesBuildPhase section */ 572 | 573 | /* Begin PBXSourcesBuildPhase section */ 574 | C0A1292F1951F48300C523D2 /* Sources */ = { 575 | isa = PBXSourcesBuildPhase; 576 | buildActionMask = 2147483647; 577 | files = ( 578 | C0C3A7041A13FBC80062D421 /* main.m in Sources */, 579 | ); 580 | runOnlyForDeploymentPostprocessing = 0; 581 | }; 582 | C0A12AB0195202A600C523D2 /* Sources */ = { 583 | isa = PBXSourcesBuildPhase; 584 | buildActionMask = 2147483647; 585 | files = ( 586 | 7EE0C2901A7A814C0067E0BE /* ARDAppClient.m in Sources */, 587 | 7EE0C2871A7A812E0067E0BE /* ARDSignalingMessage.m in Sources */, 588 | 7EE0C2831A7A812E0067E0BE /* ARDAppEngineClient.m in Sources */, 589 | 7EE0C2841A7A812E0067E0BE /* ARDCEODTURNClient.m in Sources */, 590 | 7EE0C28A1A7A812E0067E0BE /* RTCICECandidate+JSON.m in Sources */, 591 | 7EE0C28B1A7A812E0067E0BE /* RTCICEServer+JSON.m in Sources */, 592 | 7EE0C2B41A7A815F0067E0BE /* UIImage+ARDUtilities.m in Sources */, 593 | 7EE0C2891A7A812E0067E0BE /* ARDWebSocketChannel.m in Sources */, 594 | 7EE0C2AB1A7A815F0067E0BE /* ARDVideoCallViewController.m in Sources */, 595 | 7EE0C2AA1A7A815F0067E0BE /* ARDVideoCallView.m in Sources */, 596 | 7EE0C2881A7A812E0067E0BE /* ARDUtilities.m in Sources */, 597 | 7EE0C2A81A7A815F0067E0BE /* ARDMainView.m in Sources */, 598 | 7EE0C2861A7A812E0067E0BE /* ARDMessageResponse.m in Sources */, 599 | 7EE0C28D1A7A812E0067E0BE /* RTCSessionDescription+JSON.m in Sources */, 600 | C0C3A7051A13FBC80062D421 /* main.m in Sources */, 601 | 7EE0C2A91A7A815F0067E0BE /* ARDMainViewController.m in Sources */, 602 | 7EE0C2851A7A812E0067E0BE /* ARDJoinResponse.m in Sources */, 603 | 7EE0C28C1A7A812E0067E0BE /* RTCMediaConstraints+JSON.m in Sources */, 604 | 7E5B77AE1A7A84A700EF3056 /* SRWebSocket.m in Sources */, 605 | 7EE0C2A71A7A815F0067E0BE /* ARDAppDelegate.m in Sources */, 606 | ); 607 | runOnlyForDeploymentPostprocessing = 0; 608 | }; 609 | /* End PBXSourcesBuildPhase section */ 610 | 611 | /* Begin PBXTargetDependency section */ 612 | C0A12B081952031800C523D2 /* PBXTargetDependency */ = { 613 | isa = PBXTargetDependency; 614 | target = C0A129321951F48300C523D2 /* WebRTC */; 615 | targetProxy = C0A12B071952031800C523D2 /* PBXContainerItemProxy */; 616 | }; 617 | /* End PBXTargetDependency section */ 618 | 619 | /* Begin PBXVariantGroup section */ 620 | C0A12ABB195202A600C523D2 /* InfoPlist.strings */ = { 621 | isa = PBXVariantGroup; 622 | children = ( 623 | C0A12ABC195202A600C523D2 /* en */, 624 | ); 625 | name = InfoPlist.strings; 626 | sourceTree = ""; 627 | }; 628 | C0C3A6F81A13FBC80062D421 /* APPRTCViewController.xib */ = { 629 | isa = PBXVariantGroup; 630 | children = ( 631 | C0C3A6F91A13FBC80062D421 /* en */, 632 | ); 633 | name = APPRTCViewController.xib; 634 | sourceTree = ""; 635 | }; 636 | /* End PBXVariantGroup section */ 637 | 638 | /* Begin XCBuildConfiguration section */ 639 | C0A129541951F48300C523D2 /* Debug */ = { 640 | isa = XCBuildConfiguration; 641 | buildSettings = { 642 | ALWAYS_SEARCH_USER_PATHS = NO; 643 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 644 | CLANG_CXX_LIBRARY = "libc++"; 645 | CLANG_ENABLE_MODULES = YES; 646 | CLANG_ENABLE_OBJC_ARC = YES; 647 | CLANG_WARN_BOOL_CONVERSION = YES; 648 | CLANG_WARN_CONSTANT_CONVERSION = YES; 649 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 650 | CLANG_WARN_EMPTY_BODY = YES; 651 | CLANG_WARN_ENUM_CONVERSION = YES; 652 | CLANG_WARN_INT_CONVERSION = YES; 653 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 654 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 655 | COPY_PHASE_STRIP = NO; 656 | GCC_C_LANGUAGE_STANDARD = gnu99; 657 | GCC_DYNAMIC_NO_PIC = NO; 658 | GCC_OPTIMIZATION_LEVEL = 0; 659 | GCC_PREPROCESSOR_DEFINITIONS = ( 660 | "DEBUG=1", 661 | "$(inherited)", 662 | ); 663 | GCC_SYMBOLS_PRIVATE_EXTERN = NO; 664 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 665 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 666 | GCC_WARN_UNDECLARED_SELECTOR = YES; 667 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 668 | GCC_WARN_UNUSED_FUNCTION = YES; 669 | GCC_WARN_UNUSED_VARIABLE = YES; 670 | IPHONEOS_DEPLOYMENT_TARGET = 7.1; 671 | SDKROOT = iphoneos; 672 | }; 673 | name = Debug; 674 | }; 675 | C0A129551951F48300C523D2 /* Release */ = { 676 | isa = XCBuildConfiguration; 677 | buildSettings = { 678 | ALWAYS_SEARCH_USER_PATHS = NO; 679 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 680 | CLANG_CXX_LIBRARY = "libc++"; 681 | CLANG_ENABLE_MODULES = YES; 682 | CLANG_ENABLE_OBJC_ARC = YES; 683 | CLANG_WARN_BOOL_CONVERSION = YES; 684 | CLANG_WARN_CONSTANT_CONVERSION = YES; 685 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 686 | CLANG_WARN_EMPTY_BODY = YES; 687 | CLANG_WARN_ENUM_CONVERSION = YES; 688 | CLANG_WARN_INT_CONVERSION = YES; 689 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 690 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 691 | COPY_PHASE_STRIP = YES; 692 | ENABLE_NS_ASSERTIONS = NO; 693 | GCC_C_LANGUAGE_STANDARD = gnu99; 694 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 695 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 696 | GCC_WARN_UNDECLARED_SELECTOR = YES; 697 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 698 | GCC_WARN_UNUSED_FUNCTION = YES; 699 | GCC_WARN_UNUSED_VARIABLE = YES; 700 | IPHONEOS_DEPLOYMENT_TARGET = 7.1; 701 | SDKROOT = iphoneos; 702 | VALIDATE_PRODUCT = YES; 703 | }; 704 | name = Release; 705 | }; 706 | C0A129571951F48300C523D2 /* Debug */ = { 707 | isa = XCBuildConfiguration; 708 | buildSettings = { 709 | DSTROOT = /tmp/WebRTC.dst; 710 | GCC_PRECOMPILE_PREFIX_HEADER = YES; 711 | GCC_PREFIX_HEADER = "webrtc/src/talk/examples/objc/AppRTCDemo/ios/AppRTCDemo-Prefix.pch"; 712 | LIBRARY_SEARCH_PATHS = ( 713 | "$(inherited)", 714 | "$(PROJECT_DIR)", 715 | "$(PROJECT_DIR)/webrtc/libjingle_peerconnection_builds", 716 | "$(PROJECT_DIR)/webrtc", 717 | ); 718 | OTHER_LDFLAGS = "-ObjC"; 719 | PRODUCT_NAME = "$(TARGET_NAME)"; 720 | SKIP_INSTALL = YES; 721 | VALID_ARCHS = armv7; 722 | }; 723 | name = Debug; 724 | }; 725 | C0A129581951F48300C523D2 /* Release */ = { 726 | isa = XCBuildConfiguration; 727 | buildSettings = { 728 | DSTROOT = /tmp/WebRTC.dst; 729 | GCC_PRECOMPILE_PREFIX_HEADER = YES; 730 | GCC_PREFIX_HEADER = "webrtc/src/talk/examples/objc/AppRTCDemo/ios/AppRTCDemo-Prefix.pch"; 731 | LIBRARY_SEARCH_PATHS = ( 732 | "$(inherited)", 733 | "$(PROJECT_DIR)", 734 | "$(PROJECT_DIR)/webrtc/libjingle_peerconnection_builds", 735 | "$(PROJECT_DIR)/webrtc", 736 | ); 737 | OTHER_LDFLAGS = "-ObjC"; 738 | PRODUCT_NAME = "$(TARGET_NAME)"; 739 | SKIP_INSTALL = YES; 740 | VALID_ARCHS = armv7; 741 | }; 742 | name = Release; 743 | }; 744 | C0A129F41951F6B800C523D2 /* Debug */ = { 745 | isa = XCBuildConfiguration; 746 | buildSettings = { 747 | DEBUGGING_SYMBOLS = YES; 748 | GCC_ENABLE_OBJC_EXCEPTIONS = YES; 749 | GCC_GENERATE_DEBUGGING_SYMBOLS = YES; 750 | GCC_OPTIMIZATION_LEVEL = 0; 751 | GCC_PREPROCESSOR_DEFINITIONS = ( 752 | "DEBUG=1", 753 | "$(inherited)", 754 | ); 755 | MACOSX_DEPLOYMENT_TARGET = 10.9; 756 | OTHER_CFLAGS = ""; 757 | OTHER_LDFLAGS = ""; 758 | PRODUCT_NAME = "$(TARGET_NAME)"; 759 | SDKROOT = macosx; 760 | }; 761 | name = Debug; 762 | }; 763 | C0A129F51951F6B800C523D2 /* Release */ = { 764 | isa = XCBuildConfiguration; 765 | buildSettings = { 766 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 767 | GCC_ENABLE_OBJC_EXCEPTIONS = YES; 768 | MACOSX_DEPLOYMENT_TARGET = 10.9; 769 | OTHER_CFLAGS = ""; 770 | OTHER_LDFLAGS = ""; 771 | PRODUCT_NAME = "$(TARGET_NAME)"; 772 | SDKROOT = macosx; 773 | }; 774 | name = Release; 775 | }; 776 | C0A12AD9195202A600C523D2 /* Debug */ = { 777 | isa = XCBuildConfiguration; 778 | buildSettings = { 779 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 780 | ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage; 781 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 782 | GCC_PRECOMPILE_PREFIX_HEADER = YES; 783 | GCC_PREFIX_HEADER = "AppRTCDemo/AppRTCDemo-Prefix.pch"; 784 | GCC_PREPROCESSOR_DEFINITIONS = ( 785 | "DEBUG=1", 786 | "$(inherited)", 787 | ); 788 | INFOPLIST_FILE = "AppRTCDemo/AppRTCDemo-Info.plist"; 789 | LIBRARY_SEARCH_PATHS = ( 790 | "$(inherited)", 791 | "$(PROJECT_DIR)/webrtc/libjingle_peerconnection_builds", 792 | "$(PROJECT_DIR)/webrtc", 793 | ); 794 | PRODUCT_NAME = "$(TARGET_NAME)"; 795 | TARGETED_DEVICE_FAMILY = "1,2"; 796 | VALID_ARCHS = armv7; 797 | WRAPPER_EXTENSION = app; 798 | }; 799 | name = Debug; 800 | }; 801 | C0A12ADA195202A600C523D2 /* Release */ = { 802 | isa = XCBuildConfiguration; 803 | buildSettings = { 804 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 805 | ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage; 806 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 807 | GCC_PRECOMPILE_PREFIX_HEADER = YES; 808 | GCC_PREFIX_HEADER = "AppRTCDemo/AppRTCDemo-Prefix.pch"; 809 | INFOPLIST_FILE = "AppRTCDemo/AppRTCDemo-Info.plist"; 810 | LIBRARY_SEARCH_PATHS = ( 811 | "$(inherited)", 812 | "$(PROJECT_DIR)/webrtc/libjingle_peerconnection_builds", 813 | "$(PROJECT_DIR)/webrtc", 814 | ); 815 | PRODUCT_NAME = "$(TARGET_NAME)"; 816 | TARGETED_DEVICE_FAMILY = "1,2"; 817 | VALID_ARCHS = armv7; 818 | WRAPPER_EXTENSION = app; 819 | }; 820 | name = Release; 821 | }; 822 | /* End XCBuildConfiguration section */ 823 | 824 | /* Begin XCConfigurationList section */ 825 | C0A1292E1951F48300C523D2 /* Build configuration list for PBXProject "WebRTC" */ = { 826 | isa = XCConfigurationList; 827 | buildConfigurations = ( 828 | C0A129541951F48300C523D2 /* Debug */, 829 | C0A129551951F48300C523D2 /* Release */, 830 | ); 831 | defaultConfigurationIsVisible = 0; 832 | defaultConfigurationName = Release; 833 | }; 834 | C0A129561951F48300C523D2 /* Build configuration list for PBXNativeTarget "WebRTC" */ = { 835 | isa = XCConfigurationList; 836 | buildConfigurations = ( 837 | C0A129571951F48300C523D2 /* Debug */, 838 | C0A129581951F48300C523D2 /* Release */, 839 | ); 840 | defaultConfigurationIsVisible = 0; 841 | defaultConfigurationName = Release; 842 | }; 843 | C0A129F31951F6B800C523D2 /* Build configuration list for PBXLegacyTarget "Build PeerConnection" */ = { 844 | isa = XCConfigurationList; 845 | buildConfigurations = ( 846 | C0A129F41951F6B800C523D2 /* Debug */, 847 | C0A129F51951F6B800C523D2 /* Release */, 848 | ); 849 | defaultConfigurationIsVisible = 0; 850 | defaultConfigurationName = Release; 851 | }; 852 | C0A12AD8195202A600C523D2 /* Build configuration list for PBXNativeTarget "AppRTCDemo" */ = { 853 | isa = XCConfigurationList; 854 | buildConfigurations = ( 855 | C0A12AD9195202A600C523D2 /* Debug */, 856 | C0A12ADA195202A600C523D2 /* Release */, 857 | ); 858 | defaultConfigurationIsVisible = 0; 859 | defaultConfigurationName = Release; 860 | }; 861 | /* End XCConfigurationList section */ 862 | }; 863 | rootObject = C0A1292B1951F48300C523D2 /* Project object */; 864 | } 865 | -------------------------------------------------------------------------------- /ios/WebRTC.xcodeproj/xcshareddata/xcschemes/AppRTCDemo.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 33 | 39 | 40 | 41 | 42 | 43 | 49 | 50 | 51 | 52 | 61 | 62 | 68 | 69 | 70 | 71 | 72 | 73 | 79 | 80 | 86 | 87 | 88 | 89 | 91 | 92 | 95 | 96 | 97 | -------------------------------------------------------------------------------- /ios/WebRTC.xcodeproj/xcshareddata/xcschemes/WebRTC Build.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 32 | 33 | 39 | 40 | 41 | 42 | 51 | 53 | 54 | 55 | 61 | 62 | 63 | 64 | 67 | 68 | 69 | 70 | 74 | 75 | 79 | 80 | 84 | 85 | 86 | 87 | 88 | 89 | 95 | 96 | 98 | 99 | 102 | 103 | 104 | -------------------------------------------------------------------------------- /ios/WebRTC.xcodeproj/xcshareddata/xcschemes/WebRTC Clone.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 32 | 33 | 39 | 40 | 41 | 42 | 51 | 53 | 54 | 55 | 61 | 62 | 63 | 64 | 67 | 68 | 69 | 70 | 74 | 75 | 79 | 80 | 84 | 85 | 86 | 87 | 88 | 89 | 95 | 96 | 98 | 99 | 102 | 103 | 104 | -------------------------------------------------------------------------------- /ios/WebRTC.xcodeproj/xcshareddata/xcschemes/WebRTC Dance.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 32 | 33 | 39 | 40 | 41 | 42 | 51 | 53 | 54 | 55 | 61 | 62 | 63 | 64 | 67 | 68 | 69 | 70 | 74 | 75 | 79 | 80 | 84 | 85 | 86 | 87 | 88 | 89 | 95 | 96 | 98 | 99 | 102 | 103 | 104 | -------------------------------------------------------------------------------- /ios/WebRTC.xcodeproj/xcshareddata/xcschemes/WebRTC Library.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 33 | 39 | 40 | 41 | 42 | 43 | 52 | 53 | 59 | 60 | 61 | 62 | 66 | 67 | 71 | 72 | 76 | 77 | 78 | 79 | 80 | 81 | 87 | 88 | 90 | 91 | 94 | 95 | 96 | -------------------------------------------------------------------------------- /ios/WebRTC.xcodeproj/xcshareddata/xcschemes/WebRTC Pull.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 32 | 33 | 39 | 40 | 41 | 42 | 51 | 53 | 54 | 55 | 61 | 62 | 63 | 64 | 67 | 68 | 69 | 70 | 74 | 75 | 79 | 80 | 84 | 85 | 86 | 87 | 88 | 89 | 95 | 96 | 98 | 99 | 102 | 103 | 104 | -------------------------------------------------------------------------------- /ios/build.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # build.sh 4 | # WebRTC 5 | # 6 | # Created by Rahul Behera on 6/18/14. 7 | # Copyright (c) 2014 Pristine, Inc. All rights reserved. 8 | 9 | # Get location of the script itself .. thanks SO ! http://stackoverflow.com/a/246128 10 | SOURCE="${BASH_SOURCE[0]}" 11 | while [ -h "$SOURCE" ]; do # resolve $SOURCE until the file is no longer a symlink 12 | DIR="$( cd -P "$( dirname "$SOURCE" )" && pwd )" 13 | SOURCE="$(readlink "$SOURCE")" 14 | [[ "$SOURCE" != /* ]] && SOURCE="$DIR/$SOURCE" # if $SOURCE was a relative symlink, we need to resolve it relative to the path where the symlink file was located 15 | done 16 | PROJECT_DIR="$( cd -P "$( dirname "$SOURCE" )" && pwd )" 17 | 18 | DEFAULT_WEBRTC_URL="https://chromium.googlesource.com/external/webrtc" 19 | DEFAULT_POD_URL="https://s3.amazonaws.com/libjingle" 20 | WEBRTC="$PROJECT_DIR/webrtc" 21 | DEPOT_TOOLS="$PROJECT_DIR/depot_tools" 22 | BUILD="$WEBRTC/libjingle_peerconnection_builds" 23 | WEBRTC_TARGET="libWebRTC_objc" 24 | MAC_SDK="10.11" 25 | 26 | function create_directory_if_not_found() { 27 | if [ ! -d "$1" ]; 28 | then 29 | mkdir -v "$1" 30 | fi 31 | } 32 | 33 | function exec_libtool() { 34 | echo "Running libtool" 35 | libtool -static -v -o $@ 36 | } 37 | 38 | function exec_strip() { 39 | echo "Running strip" 40 | strip -S -X $@ 41 | } 42 | 43 | function exec_ninja() { 44 | echo "Running ninja" 45 | ninja -C $1 $WEBRTC_TARGET 46 | } 47 | 48 | create_directory_if_not_found "$PROJECT_DIR" 49 | create_directory_if_not_found "$WEBRTC" 50 | 51 | # Update/Get/Ensure the Gclient Depot Tools 52 | function pull_depot_tools() { 53 | 54 | echo Get the current working directory so we can change directories back when done 55 | WORKING_DIR=`pwd` 56 | 57 | echo If no directory where depot tools should be... 58 | if [ ! -d "$DEPOT_TOOLS" ] 59 | then 60 | echo Make directory for gclient called Depot Tools 61 | mkdir -p "$DEPOT_TOOLS" 62 | 63 | echo Pull the depot tools project from chromium source into the depot tools directory 64 | git clone "https://chromium.googlesource.com/chromium/tools/depot_tools.git" "$DEPOT_TOOLS" 65 | 66 | else 67 | 68 | echo Change directory into the depot tools 69 | cd "$DEPOT_TOOLS" 70 | 71 | echo Pull the depot tools down to the latest 72 | git pull 73 | fi 74 | PATH="$PATH:$DEPOT_TOOLS" 75 | echo "Go back to working directory" 76 | cd "$WORKING_DIR" 77 | } 78 | 79 | function choose_code_signing() { 80 | if [ "$WEBRTC_TARGET" == "AppRTCDemo" ]; then 81 | echo "AppRTCDemo target requires code signing since we are building an *.ipa" 82 | if [[ -z $IDENTITY ]] 83 | then 84 | COUNT=$(security find-identity -v | grep -c "iPhone Developer") 85 | if [[ $COUNT -gt 1 ]] 86 | then 87 | security find-identity -v 88 | echo "Please select your code signing identity index from the above list:" 89 | read INDEX 90 | IDENTITY=$(security find-identity -v | awk -v i=$INDEX -F "\\\) |\"" '{if (i==$1) {print $3}}') 91 | else 92 | IDENTITY=$(security find-identity -v | grep "iPhone Developer" | awk -F "\) |\"" '{print $3}') 93 | fi 94 | echo Using code signing identity $IDENTITY 95 | fi 96 | sed -i -e "s/\'CODE_SIGN_IDENTITY\[sdk=iphoneos\*\]\': \'iPhone Developer\',/\'CODE_SIGN_IDENTITY[sdk=iphoneos*]\': \'$IDENTITY\',/" $WEBRTC/src/build/common.gypi 97 | fi 98 | } 99 | 100 | # Set the base of the GYP defines, instructing gclient runhooks what to generate 101 | function wrbase() { 102 | export GYP_CROSSCOMPILE=1 103 | if [ "$WEBRTC_TARGET" != "AppRTCDemo" ]; then 104 | GYP_DEFINES="chromium_ios_signing=0" 105 | fi 106 | export GYP_GENERATORS="ninja,xcode-ninja" 107 | } 108 | 109 | # Add the iOS Device specific defines on top of the base 110 | function wrios_armv7() { 111 | wrbase 112 | export GYP_DEFINES="$GYP_DEFINES OS=ios target_arch=arm" 113 | export GYP_GENERATOR_FLAGS="output_dir=out_ios_armeabi_v7a" 114 | export GYP_CROSSCOMPILE=1 115 | } 116 | 117 | # Add the iOS ARM 64 Device specific defines on top of the base 118 | function wrios_armv8() { 119 | wrbase 120 | export GYP_DEFINES="$GYP_DEFINES OS=ios target_arch=arm64" 121 | export GYP_GENERATOR_FLAGS="output_dir=out_ios_arm64_v8a" 122 | export GYP_CROSSCOMPILE=1 123 | } 124 | 125 | # Add the iOS Simulator X86 specific defines on top of the base 126 | function wrX86() { 127 | wrbase 128 | export GYP_DEFINES="$GYP_DEFINES OS=ios target_arch=ia32" 129 | export GYP_GENERATOR_FLAGS="output_dir=out_ios_x86" 130 | } 131 | 132 | # Add the iOS Simulator X64 specific defines on top of the base 133 | function wrX86_64() { 134 | wrbase 135 | export GYP_DEFINES="$GYP_DEFINES OS=ios target_arch=x64 target_subarch=arm64" 136 | export GYP_GENERATOR_FLAGS="output_dir=out_ios_x86_64" 137 | } 138 | 139 | # Add the Mac 64 bit intel defines 140 | function wrMac64() { 141 | wrbase 142 | export GYP_DEFINES="$GYP_DEFINES OS=mac target_arch=x64 mac_sdk=$MAC_SDK" 143 | export GYP_GENERATOR_FLAGS="output_dir=out_mac_x86_64" 144 | } 145 | 146 | # Gets the revision number of the current WebRTC svn repo on the filesystem 147 | function get_revision_number() { 148 | DIR=`pwd` 149 | cd "$WEBRTC/src" 150 | 151 | REVISION_NUMBER=`git log -1 | grep 'Cr-Commit-Position: refs/heads/master@{#' | grep -v '>' | egrep -o "[0-9]+}" | tr -d '}'` 152 | 153 | if [ -z "$REVISION_NUMBER" ] 154 | then 155 | REVISION_NUMBER=`git log -1 | grep 'Cr-Commit-Position: refs/branch-heads/' | grep -v '>' | egrep -o "[0-9]+" | awk 'NR%2{printf $0"-";next;}1'` 156 | fi 157 | 158 | if [ -z "$REVISION_NUMBER" ] 159 | then 160 | REVISION_NUMBER=`git describe --tags | sed 's/\([0-9]*\)-.*/\1/'` 161 | fi 162 | 163 | if [ -z "$REVISION_NUMBER" ] 164 | then 165 | echo "Error grabbing revision number" 166 | exit 1 167 | fi 168 | 169 | echo $REVISION_NUMBER 170 | cd "$DIR" 171 | } 172 | 173 | # This function allows you to pull the latest changes from WebRTC without doing an entire clone, much faster to build and try changes 174 | # Pass in a revision number as an argument to pull that specific revision ex: update2Revision 6798 175 | function update2Revision() { 176 | # Ensure that we have gclient added to our environment, so this function can run standalone 177 | pull_depot_tools 178 | cd "$WEBRTC" 179 | 180 | # Setup gclient config 181 | echo Configuring gclient for iOS build 182 | if [ -z $USER_WEBRTC_URL ] 183 | then 184 | echo "User has not specified a different webrtc url. Using default" 185 | gclient config --unmanaged --name=src "$DEFAULT_WEBRTC_URL" 186 | else 187 | echo "User has specified their own webrtc url $USER_WEBRTC_URL" 188 | gclient config --unmanaged --name=src "$USER_WEBRTC_URL" 189 | fi 190 | 191 | # # Make sure that the target os is set to JUST MAC at first by adding that to the .gclient file that gclient config command created 192 | # # Note this is a workaround until one of the depot_tools/ios bugs has been fixed 193 | # echo "target_os = ['mac']" >> .gclient 194 | # if [ -z $1 ] 195 | # then 196 | # sync 197 | # else 198 | # sync "$1" 199 | # fi 200 | 201 | # # Delete the last line saying we will only build for mac 202 | # sed -i "" '$d' .gclient 203 | 204 | # Write mac and ios to the target os in the gclient file generated by gclient config 205 | echo "target_os = ['ios', 'mac']" >> .gclient 206 | 207 | if [ -z $1 ] 208 | then 209 | sync 210 | else 211 | sync "$1" 212 | fi 213 | 214 | # Inject the new libWebRTC_objc target magic 215 | if [ "$WEBRTC_TARGET" == "libWebRTC_objc" ] ; then 216 | twiddle_objc_target 217 | fi 218 | echo "-- webrtc has been successfully updated" 219 | } 220 | 221 | # This function cleans out your webrtc directory and does a fresh clone -- slower than a pull 222 | # Pass in a revision number as an argument to clone that specific revision ex: clone 6798 223 | function clone() { 224 | DIR=`pwd` 225 | 226 | rm -rf "$WEBRTC" 227 | mkdir -v "$WEBRTC" 228 | 229 | update2Revision "$1" 230 | } 231 | 232 | # Fire the sync command. Accepts an argument as the revision number that you want to sync to 233 | function sync() { 234 | pull_depot_tools 235 | cd "$WEBRTC" 236 | choose_code_signing 237 | 238 | if [ "$WEBRTC_TARGET" == "libWebRTC_objc" ] ; then 239 | twiddle_objc_target 240 | else 241 | untwiddle_objc_target 242 | fi 243 | 244 | if [ -z $1 ] 245 | then 246 | gclient sync --with_branch_heads || true 247 | else 248 | gclient sync -r "$1" --with_branch_heads || true 249 | fi 250 | } 251 | 252 | # Functions to twiddle the libWebRTC_objc target so that we can build the files that we need and exclude socket rocket and such 253 | function twiddle_objc_target () { 254 | cd "$WEBRTC" 255 | echo "Adding a new libWebRTC_objc target" 256 | echo "$PROJECT_DIR/insert_two_lines_after_text.py" 257 | python "$PROJECT_DIR/insert_two_lines_after_text.py" "$WEBRTC/src/webrtc/webrtc_examples.gyp" 258 | } 259 | 260 | function untwiddle_objc_target () { 261 | cd "$WEBRTC/src" 262 | 263 | file_changed=`git status --porcelain webrtc/webrtc_examples.gyp | awk '/^ M/{ print $2 }'` 264 | 265 | if [ "$file_changed" == "webrtc/webrtc_examples.gyp" ] ; then 266 | echo "Untwiddling the libWebRTC_objc target" 267 | git checkout -- webrtc/webrtc_examples.gyp 268 | fi 269 | } 270 | 271 | # Convenience function to copy the headers by creating a symbolic link to the headers directory deep within webrtc src 272 | function copy_headers() { 273 | if [ ! -h "$WEBRTC/headers" ]; then 274 | create_directory_if_not_found "$BUILD" 275 | ln -s "$WEBRTC/src/talk/app/webrtc/objc/public/" "$WEBRTC/headers" || true 276 | fi 277 | } 278 | 279 | function build_webrtc_mac() { 280 | if [ -d "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX$MAC_SDK.sdk" ] 281 | then 282 | echo "Found $MAC_SDK sdk" 283 | cd "$WEBRTC/src" 284 | 285 | wrMac64 286 | export MACOSX_DEPLOYMENT_TARGET="$MAC_SDK" 287 | 288 | choose_code_signing 289 | gclient runhooks 290 | 291 | copy_headers 292 | 293 | WEBRTC_REVISION=`get_revision_number` 294 | if [ "$WEBRTC_DEBUG" = true ] ; then 295 | exec_ninja "out_mac_x86_64/Debug/" 296 | exec_libtool "$BUILD/libWebRTC-$WEBRTC_REVISION-mac-x86_64-Debug.a" "$WEBRTC"/src/out_mac_x86_64/Debug/*.a 297 | fi 298 | 299 | if [ "$WEBRTC_RELEASE" = true ] ; then 300 | exec_ninja "out_mac_x86_64/Release/" 301 | exec_libtool "$BUILD/libWebRTC-$WEBRTC_REVISION-mac-x86_64-Release.a" "$WEBRTC"/src/out_mac_x86_64/Release/*.a 302 | exec_strip "$BUILD/libWebRTC-$WEBRTC_REVISION-mac-x86_64-Release.a" 303 | fi 304 | else 305 | echo "Change the OSX Target by changing the MAC_SDK environment variable to 10.9. There is a bug with building mac target 10.10 (it assumes its 10.1 and lower than 10.8)" 306 | echo "---------- OR ----------" 307 | echo "Please download Xcode 5.1.1 (http://adcdownload.apple.com/Developer_Tools/xcode_5.1.1/xcode_5.1.1.dmg) and open" 308 | echo "Copy the MacOSX10.8.sdk from the DMG to the current Xcode SDK" 309 | echo "sudo cp -a /Volumes/Xcode/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.8.sdk /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs" 310 | exit 1 311 | fi 312 | } 313 | 314 | # Build AppRTC Demo for the simulator (ia32 architecture) 315 | function build_apprtc_sim() { 316 | cd "$WEBRTC/src" 317 | 318 | wrX86 319 | choose_code_signing 320 | gclient runhooks 321 | 322 | copy_headers 323 | 324 | WEBRTC_REVISION=`get_revision_number` 325 | if [ "$WEBRTC_DEBUG" = true ] ; then 326 | exec_ninja "out_ios_x86/Debug-iphonesimulator/" 327 | exec_libtool "$BUILD/libWebRTC-$WEBRTC_REVISION-ios-x86-Debug.a" "$WEBRTC"/src/out_ios_x86/Debug-iphonesimulator/*.a 328 | fi 329 | 330 | if [ "$WEBRTC_PROFILE" = true ] ; then 331 | exec_ninja "out_ios_x86/Profile-iphonesimulator/" 332 | exec_libtool "$BUILD/libWebRTC-$WEBRTC_REVISION-ios-x86-Profile.a" "$WEBRTC"/src/out_ios_x86/Profile-iphonesimulator/*.a 333 | fi 334 | 335 | if [ "$WEBRTC_RELEASE" = true ] ; then 336 | exec_ninja "out_ios_x86/Release-iphonesimulator/" 337 | exec_libtool "$BUILD/libWebRTC-$WEBRTC_REVISION-ios-x86-Release.a" "$WEBRTC"/src/out_ios_x86/Release-iphonesimulator/*.a 338 | exec_strip "$BUILD/libWebRTC-$WEBRTC_REVISION-ios-x86-Release.a" 339 | fi 340 | } 341 | 342 | # Build AppRTC Demo for the 64 bit simulator (x86_64 architecture) 343 | function build_apprtc_sim64() { 344 | cd "$WEBRTC/src" 345 | 346 | wrX86_64 347 | choose_code_signing 348 | gclient runhooks 349 | 350 | copy_headers 351 | 352 | WEBRTC_REVISION=`get_revision_number` 353 | if [ "$WEBRTC_DEBUG" = true ] ; then 354 | exec_ninja "out_ios_x86_64/Debug-iphonesimulator/" 355 | exec_libtool "$BUILD/libWebRTC-$WEBRTC_REVISION-ios-x86_64-Debug.a" "$WEBRTC"/src/out_ios_x86_64/Debug-iphonesimulator/*.a 356 | fi 357 | 358 | if [ "$WEBRTC_PROFILE" = true ] ; then 359 | exec_ninja "out_ios_x86_64/Profile-iphonesimulator/" 360 | exec_libtool "$BUILD/libWebRTC-$WEBRTC_REVISION-ios-x86_64-Profile.a" "$WEBRTC"/src/out_ios_x86_64/Profile-iphonesimulator/*.a 361 | fi 362 | 363 | if [ "$WEBRTC_RELEASE" = true ] ; then 364 | exec_ninja "out_ios_x86_64/Release-iphonesimulator/" 365 | exec_libtool "$BUILD/libWebRTC-$WEBRTC_REVISION-ios-x86_64-Release.a" "$WEBRTC"/src/out_ios_x86_64/Release-iphonesimulator/*.a 366 | exec_strip "$BUILD/libWebRTC-$WEBRTC_REVISION-ios-x86_64-Release.a" 367 | fi 368 | } 369 | 370 | # Build AppRTC Demo for a real device 371 | function build_apprtc() { 372 | cd "$WEBRTC/src" 373 | 374 | wrios_armv7 375 | choose_code_signing 376 | gclient runhooks 377 | 378 | copy_headers 379 | 380 | WEBRTC_REVISION=`get_revision_number` 381 | if [ "$WEBRTC_DEBUG" = true ] ; then 382 | exec_ninja "out_ios_armeabi_v7a/Debug-iphoneos/" 383 | exec_libtool "$BUILD/libWebRTC-$WEBRTC_REVISION-ios-armeabi_v7a-Debug.a" "$WEBRTC"/src/out_ios_armeabi_v7a/Debug-iphoneos/*.a 384 | fi 385 | 386 | if [ "$WEBRTC_PROFILE" = true ] ; then 387 | exec_ninja "out_ios_armeabi_v7a/Profile-iphoneos/" 388 | exec_libtool "$BUILD/libWebRTC-$WEBRTC_REVISION-ios-armeabi_v7a-Profile.a" "$WEBRTC"/src/out_ios_armeabi_v7a/Profile-iphoneos/*.a 389 | fi 390 | 391 | if [ "$WEBRTC_RELEASE" = true ] ; then 392 | exec_ninja "out_ios_armeabi_v7a/Release-iphoneos/" 393 | exec_libtool "$BUILD/libWebRTC-$WEBRTC_REVISION-ios-armeabi_v7a-Release.a" "$WEBRTC"/src/out_ios_armeabi_v7a/Release-iphoneos/*.a 394 | exec_strip "$BUILD/libWebRTC-$WEBRTC_REVISION-ios-armeabi_v7a-Release.a" 395 | fi 396 | } 397 | 398 | 399 | # Build AppRTC Demo for an armv7 real device 400 | function build_apprtc_arm64() { 401 | cd "$WEBRTC/src" 402 | 403 | wrios_armv8 404 | choose_code_signing 405 | gclient runhooks 406 | 407 | copy_headers 408 | 409 | WEBRTC_REVISION=`get_revision_number` 410 | if [ "$WEBRTC_DEBUG" = true ] ; then 411 | exec_ninja "out_ios_arm64_v8a/Debug-iphoneos/" 412 | exec_libtool "$BUILD/libWebRTC-$WEBRTC_REVISION-ios-arm64_v8a-Debug.a" "$WEBRTC"/src/out_ios_arm64_v8a/Debug-iphoneos/*.a 413 | fi 414 | 415 | if [ "$WEBRTC_PROFILE" = true ] ; then 416 | exec_ninja "out_ios_arm64_v8a/Profile-iphoneos/" 417 | exec_libtool "$BUILD/libWebRTC-$WEBRTC_REVISION-ios-arm64_v8a-Profile.a" "$WEBRTC"/src/out_ios_arm64_v8a/Profile-iphoneos/*.a 418 | fi 419 | 420 | if [ "$WEBRTC_RELEASE" = true ] ; then 421 | exec_ninja "out_ios_arm64_v8a/Release-iphoneos/" 422 | exec_libtool "$BUILD/libWebRTC-$WEBRTC_REVISION-ios-arm64_v8a-Release.a" "$WEBRTC"/src/out_ios_arm64_v8a/Release-iphoneos/*.a 423 | exec_strip "$BUILD/libWebRTC-$WEBRTC_REVISION-ios-arm64_v8a-Release.a" 424 | fi 425 | } 426 | 427 | # This function is used to put together the intel (simulator), armv7 and arm64 builds (device) into one static library so its easy to deal with in Xcode 428 | # Outputs the file into the build directory with the revision number 429 | function lipo_intel_and_arm() { 430 | if [ "$WEBRTC_DEBUG" = true ] ; then 431 | lipo_for_configuration "Debug" 432 | fi 433 | 434 | if [ "$WEBRTC_PROFILE" = true ] ; then 435 | lipo_for_configuration "Profile" 436 | fi 437 | 438 | if [ "$WEBRTC_RELEASE" = true ] ; then 439 | lipo_for_configuration "Release" 440 | fi 441 | } 442 | 443 | function lipo_for_configuration() { 444 | CONFIGURATION=$1 445 | WEBRTC_REVISION=`get_revision_number` 446 | 447 | # Directories to use for lipo, armv7 and ia32 as default 448 | LIPO_DIRS="$BUILD/libWebRTC-$WEBRTC_REVISION-ios-armeabi_v7a-$CONFIGURATION.a" 449 | # Add ARM64 450 | LIPO_DIRS="$LIPO_DIRS $BUILD/libWebRTC-$WEBRTC_REVISION-ios-arm64_v8a-$CONFIGURATION.a" 451 | # Add x86 452 | LIPO_DIRS="$LIPO_DIRS $BUILD/libWebRTC-$WEBRTC_REVISION-ios-x86-$CONFIGURATION.a" 453 | # and add x86_64 454 | LIPO_DIRS="$LIPO_DIRS $BUILD/libWebRTC-$WEBRTC_REVISION-ios-x86_64-$CONFIGURATION.a" 455 | 456 | # Lipo the simulator build with the ios build into a universal library 457 | lipo -create -output "$BUILD/libWebRTC-$WEBRTC_REVISION-arm-intel-$CONFIGURATION.a" $LIPO_DIRS 458 | 459 | # Delete the latest symbolic link just in case :) 460 | if [ -a "$WEBRTC/libWebRTC-LATEST-Universal-$CONFIGURATION.a" ] 461 | then 462 | rm "$WEBRTC/libWebRTC-LATEST-Universal-$CONFIGURATION.a" 463 | fi 464 | 465 | # Create a symbolic link pointing to the exact revision that is the latest. This way I don't have to change the xcode project file every time we update the revision number, while still keeping it easy to track which revision you are on 466 | ln -sf "$BUILD/libWebRTC-$WEBRTC_REVISION-arm-intel-$CONFIGURATION.a" "$WEBRTC/libWebRTC-LATEST-Universal-$CONFIGURATION.a" 467 | 468 | # Make it clear which revision you are using .... You don't want to get in the state where you don't know which revision you were using... trust me 469 | echo "The libWebRTC-LATEST-Universal-$CONFIGURATION.a in this same directory, is revision " > "$WEBRTC/libWebRTC-LATEST-Universal-$CONFIGURATION.a.version.txt" 470 | 471 | # Also write to a file for funzies 472 | echo $WEBRTC_REVISION >> "$WEBRTC/libWebRTC-LATEST-Universal-$CONFIGURATION.a.version.txt" 473 | 474 | # Write the version down to a file 475 | echo "Architectures Built" >> "$BUILD/libWebRTC-$WEBRTC_REVISION-arm-intel-$CONFIGURATION.a.version.txt" 476 | echo "ia32 - Intel x86" >> "$BUILD/libWebRTC-$WEBRTC_REVISION-arm-intel-$CONFIGURATION.a.version.txt" 477 | echo "ia64 - Intel x86_64" >> "$BUILD/libWebRTC-$WEBRTC_REVISION-arm-intel-$CONFIGURATION.a.version.txt" 478 | echo "armv7 - Arm x86" >> "$BUILD/libWebRTC-$WEBRTC_REVISION-arm-intel-$CONFIGURATION.a.version.txt" 479 | echo "arm64_v8a - Arm 64 (armv8)" >> "$BUILD/libWebRTC-$WEBRTC_REVISION-arm-intel-$CONFIGURATION.a.version.txt" 480 | } 481 | 482 | # Convenience method to just "get webrtc" -- a clone 483 | # Pass in an argument if you want to get a specific webrtc revision 484 | function get_webrtc() { 485 | pull_depot_tools 486 | update2Revision "$1" 487 | } 488 | 489 | # Build webrtc for an ios device and simulator, then create a universal library 490 | function build_webrtc() { 491 | pull_depot_tools 492 | build_apprtc 493 | build_apprtc_arm64 494 | build_apprtc_sim 495 | build_apprtc_sim64 496 | lipo_intel_and_arm 497 | } 498 | 499 | # Create the static library, requires an argument specifiying Debug or Release 500 | function create_archive_of_static_libraries() { 501 | echo Get the current working directory so we can change directories back when done 502 | WORKING_DIR=`pwd` 503 | VERSION_BUILD=0 504 | WEBRTC_REVISION=`get_revision_number` 505 | 506 | echo "Creating Static Library" 507 | create_directory_if_not_found "$BUILD/archives" 508 | rm -rf "$BUILD/archives/$WEBRTC_REVISION/$1" 509 | create_directory_if_not_found "$BUILD/archives/$WEBRTC_REVISION" 510 | create_directory_if_not_found "$BUILD/archives/$WEBRTC_REVISION/$1" 511 | 512 | create_directory_if_not_found "$BUILD/archives/LATEST/" 513 | ln -sfv "$BUILD/archives/$WEBRTC_REVISION/$1" "$BUILD/archives/LATEST/" 514 | 515 | cd "$BUILD/archives/$WEBRTC_REVISION/$1" 516 | 517 | create_directory_if_not_found libjingle_peerconnection/ 518 | 519 | # Copy podspec with ios and mac 520 | cp -v "$PROJECT_DIR/libjingle_peerconnection.podspec" "libjingle_peerconnection.podspec" 521 | 522 | # inject pod url 523 | if [ -z $USER_POD_URL ] 524 | then 525 | echo "User has not specified a different pod url. Using default" 526 | sed -ic "s|{POD_URL}|"$DEFAULT_POD_URL"|g" libjingle_peerconnection.podspec 527 | else 528 | echo "User has specified their own pod url $USER_POD_URL" 529 | sed -ic "s|{POD_URL}|"$USER_POD_URL"|g" libjingle_peerconnection.podspec 530 | fi 531 | 532 | # inject revision number 533 | sed -ic "s/{WEBRTC_REVISION}/$WEBRTC_REVISION/g" libjingle_peerconnection.podspec 534 | # inject build type string 535 | sed -ic "s/{BUILD_TYPE_STRING}/$1/g" libjingle_peerconnection.podspec 536 | 537 | if [ $1 = "Debug" ] 538 | then 539 | VERSION_BUILD=`get_version_build "$WEBRTC_REVISION" 0` 540 | cp -fv "$BUILD/libWebRTC-$WEBRTC_REVISION-arm-intel-Debug.a" "libjingle_peerconnection/libWebRTC.a" 541 | cp -fv "$BUILD/libWebRTC-$WEBRTC_REVISION-mac-x86_64-Debug.a" "libjingle_peerconnection/libWebRTC-osx.a" 542 | sed -ic "s/{BUILD_TYPE}/0/g" libjingle_peerconnection.podspec 543 | sed -ic "s/{VERSION_BUILD}/$VERSION_BUILD/g" libjingle_peerconnection.podspec 544 | fi 545 | if [ $1 = "Release" ] 546 | then 547 | VERSION_BUILD=`get_version_build "$WEBRTC_REVISION" 2` 548 | cp -fv "$BUILD/libWebRTC-$WEBRTC_REVISION-arm-intel-Release.a" "libjingle_peerconnection/libWebRTC.a" 549 | cp -fv "$BUILD/libWebRTC-$WEBRTC_REVISION-mac-x86_64-Release.a" "libjingle_peerconnection/libWebRTC-osx.a" 550 | sed -ic "s/{BUILD_TYPE}/2/g" libjingle_peerconnection.podspec 551 | sed -ic "s/{VERSION_BUILD}/$VERSION_BUILD/g" libjingle_peerconnection.podspec 552 | fi 553 | 554 | # write the revision and build type into a file 555 | echo "revision $WEBRTC_REVISION $1 build" > "libjingle_peerconnection/libjingle_peerconnection_revision_build.txt" 556 | 557 | # add headers 558 | cp -fvR "$WEBRTC/src/talk/app/webrtc/objc/public/" "libjingle_peerconnection/Headers" 559 | 560 | # Compress artifact 561 | tar --use-compress-prog=pbzip2 -cvLf "libWebRTC.tar.bz2" * 562 | 563 | echo Go back to working directory 564 | cd "$WORKING_DIR" 565 | } 566 | 567 | # Grabs the current version build based on what is 568 | function get_version_build() { 569 | # Set version build 570 | VERSION_BUILD=0 571 | 572 | # Create temp output file to parse 573 | pod search libjingle_peerconnection > /tmp/libjingle_search.log 574 | 575 | if [ -z $USER_POD_URL ] 576 | then 577 | VERSION_BUILD=`egrep -o 'Versions: .*\[master repo\]' /tmp/libjingle_search.log | egrep -o '\d+\.\d\.\d+' | awk -v REVISION_NUM="$1" -v BUILD_TYPE="$2" -F '.' 'BEGIN{ VERSION_COUNT = 0 }; { if ($1 == REVISION_NUM && $2 == BUILD_TYPE) VERSION_COUNT += 1 }; END{ print VERSION_COUNT };'` 578 | else 579 | VERSION_BUILD=`egrep -o '\[master repo\].*' /tmp/libjingle_search.log | egrep -o '\d+\.\d\.\d+' | awk -v REVISION_NUM="$1" -v BUILD_TYPE="$2" -F '.' 'BEGIN{ VERSION_COUNT = 0 }; { if ($1 == REVISION_NUM && $2 == BUILD_TYPE) VERSION_COUNT += 1 }; END{ print VERSION_COUNT };'` 580 | fi 581 | 582 | echo "$VERSION_BUILD" 583 | } 584 | 585 | # Create an iOS "framework" for distribution sans CocoaPods 586 | function create_ios_framework() { 587 | if [ "$WEBRTC_DEBUG" = true ] ; then 588 | create_ios_framework_for_configuration "Debug" 589 | fi 590 | 591 | if [ "$WEBRTC_PROFILE" = true ] ; then 592 | create_ios_framework_for_configuration "Profile" 593 | fi 594 | 595 | if [ "$WEBRTC_RELEASE" = true ] ; then 596 | create_ios_framework_for_configuration "Release" 597 | fi 598 | } 599 | 600 | function create_ios_framework_for_configuration () { 601 | CONFIGURATION=$1 602 | 603 | rm -rf "$WEBRTC/Framework/$CONFIGURATION/WebRTC.framework" 604 | mkdir -p "$WEBRTC/Framework/$CONFIGURATION/WebRTC.framework/Versions/A/Headers" 605 | cp "$WEBRTC"/src/talk/app/webrtc/objc/public/*.h "$WEBRTC/Framework/$CONFIGURATION/WebRTC.framework/Versions/A/Headers" 606 | cp "$WEBRTC/libWebRTC-LATEST-Universal-$CONFIGURATION.a" "$WEBRTC/Framework/$CONFIGURATION/WebRTC.framework/Versions/A/WebRTC" 607 | 608 | WEBRTC_REVISION=`get_revision_number` 609 | echo $WEBRTC_REVISION >> "$WEBRTC/Framework/$CONFIGURATION/WebRTC.framework/Version.txt" 610 | 611 | pushd "$WEBRTC/Framework/$CONFIGURATION/WebRTC.framework/Versions" 612 | ln -sfh A Current 613 | popd 614 | pushd "$WEBRTC/Framework/$CONFIGURATION/WebRTC.framework" 615 | ln -sfh Versions/Current/Headers Headers 616 | ln -sfh Versions/Current/WebRTC WebRTC 617 | popd 618 | } 619 | 620 | # Get webrtc then build webrtc 621 | function dance() { 622 | # These next if statement trickery is so that if you run from the command line and don't set anything to build, it will default to the debug profile. 623 | BUILD_DEBUG=true 624 | 625 | if [ "$WEBRTC_RELEASE" = true ] ; then 626 | BUILD_DEBUG=false 627 | fi 628 | 629 | if [ "$WEBRTC_PROFILE" = true ] ; then 630 | BUILD_DEBUG=false 631 | fi 632 | 633 | if [ "$BUILD_DEBUG" = true ] ; then 634 | WEBRTC_DEBUG=true 635 | fi 636 | 637 | get_webrtc $@ 638 | build_webrtc 639 | echo "Finished Dancing!" 640 | } 641 | -------------------------------------------------------------------------------- /ios/build_webrtc.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # build_webrtc.sh 4 | # WebRTC 5 | # 6 | # Created by Rahul Behera on 6/18/14. 7 | # Copyright (c) 2014 Pristine, Inc. All rights reserved. 8 | SOURCE="${BASH_SOURCE[0]}" 9 | while [ -h "$SOURCE" ]; do # resolve $SOURCE until the file is no longer a symlink 10 | DIR="$( cd -P "$( dirname "$SOURCE" )" && pwd )" 11 | SOURCE="$(readlink "$SOURCE")" 12 | [[ $SOURCE != /* ]] && SOURCE="$DIR/$SOURCE" # if $SOURCE was a relative symlink, we need to resolve it relative to the path where the symlink file was located 13 | done 14 | PROJECT_DIR="$( cd -P "$( dirname "$SOURCE" )" && pwd )" 15 | 16 | source "$PROJECT_DIR/build.sh" 17 | build_webrtc 18 | -------------------------------------------------------------------------------- /ios/clone.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # clone.sh 4 | # WebRTC 5 | # 6 | # Created by Rahul Behera on 6/18/14. 7 | # Copyright (c) 2014 Pristine, Inc. All rights reserved. 8 | SOURCE="${BASH_SOURCE[0]}" 9 | while [ -h "$SOURCE" ]; do # resolve $SOURCE until the file is no longer a symlink 10 | DIR="$( cd -P "$( dirname "$SOURCE" )" && pwd )" 11 | SOURCE="$(readlink "$SOURCE")" 12 | [[ $SOURCE != /* ]] && SOURCE="$DIR/$SOURCE" # if $SOURCE was a relative symlink, we need to resolve it relative to the path where the symlink file was located 13 | done 14 | PROJECT_DIR="$( cd -P "$( dirname "$SOURCE" )" && pwd )" 15 | 16 | source "$PROJECT_DIR/build.sh" 17 | pull_depot_tools 18 | rm -rf "$PROJECT_DIR/webrtc/src" 19 | get_webrtc 20 | -------------------------------------------------------------------------------- /ios/dance.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # dance.sh 4 | # WebRTC 5 | # 6 | # Created by Rahul Behera on 6/18/14. 7 | # Copyright (c) 2014 Pristine, Inc. All rights reserved. 8 | SOURCE="${BASH_SOURCE[0]}" 9 | while [ -h "$SOURCE" ]; do # resolve $SOURCE until the file is no longer a symlink 10 | DIR="$( cd -P "$( dirname "$SOURCE" )" && pwd )" 11 | SOURCE="$(readlink "$SOURCE")" 12 | [[ $SOURCE != /* ]] && SOURCE="$DIR/$SOURCE" # if $SOURCE was a relative symlink, we need to resolve it relative to the path where the symlink file was located 13 | done 14 | PROJECT_DIR="$( cd -P "$( dirname "$SOURCE" )" && pwd )" 15 | 16 | source "$PROJECT_DIR/build.sh" 17 | 18 | dance $@ 19 | echo "Finished Dancing!" 20 | 21 | -------------------------------------------------------------------------------- /ios/framework_dance.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | SOURCE="${BASH_SOURCE[0]}" 4 | while [ -h "$SOURCE" ]; do # resolve $SOURCE until the file is no longer a symlink 5 | DIR="$( cd -P "$( dirname "$SOURCE" )" && pwd )" 6 | SOURCE="$(readlink "$SOURCE")" 7 | [[ $SOURCE != /* ]] && SOURCE="$DIR/$SOURCE" # if $SOURCE was a relative symlink, we need to resolve it relative to the path where the symlink file was located 8 | done 9 | PROJECT_DIR="$( cd -P "$( dirname "$SOURCE" )" && pwd )" 10 | 11 | source "$PROJECT_DIR/build.sh" 12 | 13 | dance $@ 14 | create_ios_framework 15 | 16 | echo "Finished Framework Dancing!" 17 | -------------------------------------------------------------------------------- /ios/gclient_ios_and_mac_tools: -------------------------------------------------------------------------------- 1 | solutions = [ 2 | { "name" : "trunk", 3 | "url" : "https://github.com/thebehera/webrtc-mirror.git", 4 | "deps_file" : "DEPS", 5 | "managed" : True, 6 | "custom_deps" : { 7 | }, 8 | "safesync_url": "", 9 | } 10 | ] 11 | 12 | cache_dir = None 13 | target_os=['mac', 'ios'] -------------------------------------------------------------------------------- /ios/gclient_mac_tools_for_ios_only: -------------------------------------------------------------------------------- 1 | solutions = [ 2 | { "name" : "trunk", 3 | "url" : "https://github.com/thebehera/webrtc-mirror.git", 4 | "deps_file" : "DEPS", 5 | "managed" : True, 6 | "custom_deps" : { 7 | }, 8 | "safesync_url": "", 9 | } 10 | ] 11 | 12 | cache_dir = None 13 | target_os=['mac'] -------------------------------------------------------------------------------- /ios/insert_two_lines_after_text.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/python 2 | 3 | import sys, ast, json 4 | 5 | FILE = sys.argv[1] 6 | 7 | FIND = """ ['OS=="ios" or (OS=="mac" and target_arch!="ia32")', {""" 8 | APPEND = """ { 'target_name': 'libWebRTC_objc', # Injected target using github.com/pristineio/webrtc-build-scripts 9 | 'type': 'shared_library', # We are creating a dummy shared_library so all the dependencies are built as static libraries. i think this is a bug 10 | 'dependencies': [ 11 | '<(webrtc_root)/system_wrappers/system_wrappers.gyp:field_trial_default', 12 | '../talk/app/webrtc/legacy_objc_api.gyp:libjingle_peerconnection_objc', 13 | ], 14 | 'sources': [ 15 | ], 16 | 'export_dependent_settings': [ 17 | '../talk/app/webrtc/legacy_objc_api.gyp:libjingle_peerconnection_objc', 18 | ], 19 | }, 20 | """ 21 | 22 | def findSubstringInLines(lines, find): 23 | for i, line in enumerate(lines): 24 | if find in line: 25 | return i 26 | return -1 27 | 28 | def isStringAlreadyAppended(f, s): 29 | with open(f) as content: 30 | data = content.read() 31 | return s in data 32 | 33 | if isStringAlreadyAppended(FILE, APPEND): 34 | exit(0) 35 | 36 | with open(FILE, 'r+') as content: 37 | lines = content.readlines() 38 | index = findSubstringInLines(lines, FIND) 39 | 40 | if index < 0: 41 | exit(-1) 42 | 43 | lines.insert(index + 2, APPEND) 44 | 45 | with open(FILE, 'r+') as content: 46 | content.write("".join(lines)) 47 | content.truncate() 48 | -------------------------------------------------------------------------------- /ios/libjingle_peerconnection.podspec: -------------------------------------------------------------------------------- 1 | Pod::Spec.new do |s| 2 | s.name = "libjingle_peerconnection" 3 | s.version = "{WEBRTC_REVISION}.{BUILD_TYPE}.{VERSION_BUILD}" 4 | s.summary = "WebRTC Video Streaming Peer Connection API's. An iOS WebRTC demo application hosted on App Engine. Builds by Pristine.io" 5 | s.description = <<-DESC 6 | The WebRTC native APIs are implemented based on the following [WebRTC spec.](http://dev.w3.org/2011/webrtc/editor/webrtc.html) 7 | 8 | The code that implements WebRTC native APIs (including the Stream and the PeerConnection APIs) are available in [libjingle](https://code.google.com/p/libjingle/source/browse/#svn%2Ftrunk%2Ftalk%2Fapp%2Fwebrtc). A [sample client application](https://code.google.com/p/libjingle/source/browse/#svn%2Ftrunk%2Ftalk%2Fexamples%2Fpeerconnection%2Fclient) is also provided there. 9 | 10 | The target audience of this document are those who want to use WebRTC Native APIs to develop native RTC applications. 11 | DESC 12 | s.homepage = "https://github.com/pristineio/webrtc-build-scripts" 13 | s.ios.platform = :ios, '7.0' 14 | s.osx.platform = :osx, '10.8' 15 | s.author = { "Rahul Behera" => "rahul@pristine.io" } 16 | s.social_media_url = 'https://twitter.com/bot_the_builder' 17 | s.source = { :http => "{POD_URL}/{WEBRTC_REVISION}/{BUILD_TYPE_STRING}/{VERSION_BUILD}/libWebRTC.tar.bz2" } 18 | s.ios.source_files = 'libjingle_peerconnection/Headers/*.h' 19 | s.osx.source_files = 'libjingle_peerconnection/Headers/*.h' 20 | s.osx.public_header_files = "libjingle_peerconnection/Headers/*.h" 21 | s.ios.public_header_files = "libjingle_peerconnection/Headers/*.h" 22 | s.ios.preserve_paths = 'libjingle_peerconnection/libWebRTC.a' 23 | s.ios.vendored_libraries = 'libjingle_peerconnection/libWebRTC.a' 24 | s.osx.preserve_paths = 'libjingle_peerconnection/libWebRTC-osx.a' 25 | s.osx.vendored_libraries = 'libjingle_peerconnection/libWebRTC-osx.a' 26 | s.ios.deployment_target = '7.0' 27 | s.osx.deployment_target = '10.8' 28 | s.source_files = 'libjingle_peerconnection/Headers/*.h' 29 | s.osx.framework = 'AVFoundation', 'AudioToolbox', 'CoreGraphics', 'CoreMedia', 'GLKit', 'QTKit', 'CoreAudio', 'CoreVideo', 'VideoToolbox' 30 | s.ios.framework = 'AVFoundation', 'AudioToolbox', 'CoreGraphics', 'CoreMedia', 'GLKit', 'UIKit', 'VideoToolbox' 31 | s.libraries = 'c', 'sqlite3', 'stdc++' 32 | s.requires_arc = true 33 | s.xcconfig = { 'LIBRARY_SEARCH_PATHS' => '"$(PODS_ROOT)/libjingle_peerconnection"', 34 | 'HEADER_SEARCH_PATHS' => '"${PODS_ROOT}/Headers/libjingle_peerconnection"' } 35 | s.license = { 36 | :type => 'http://www.webrtc.org/license-rights/license', 37 | :text => <<-LICENSE 38 | Copyright (c) 2011, The WebRTC project authors. All rights reserved. 39 | 40 | Redistribution and use in source and binary forms, with or without 41 | modification, are permitted provided that the following conditions are 42 | met: 43 | 44 | * Redistributions of source code must retain the above copyright 45 | notice, this list of conditions and the following disclaimer. 46 | 47 | * Redistributions in binary form must reproduce the above copyright 48 | notice, this list of conditions and the following disclaimer in 49 | the documentation and/or other materials provided with the 50 | distribution. 51 | 52 | * Neither the name of Google nor the names of its contributors may 53 | be used to endorse or promote products derived from this software 54 | without specific prior written permission. 55 | 56 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 57 | "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 58 | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 59 | A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 60 | HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 61 | SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 62 | LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 63 | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 64 | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 65 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 66 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 67 | LICENSE 68 | } 69 | end 70 | -------------------------------------------------------------------------------- /ios/pull.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # pull.sh 4 | # WebRTC 5 | # 6 | # Created by Rahul Behera on 6/18/14. 7 | # Copyright (c) 2014 Pristine, Inc. All rights reserved. 8 | SOURCE="${BASH_SOURCE[0]}" 9 | while [ -h "$SOURCE" ]; do # resolve $SOURCE until the file is no longer a symlink 10 | DIR="$( cd -P "$( dirname "$SOURCE" )" && pwd )" 11 | SOURCE="$(readlink "$SOURCE")" 12 | [[ $SOURCE != /* ]] && SOURCE="$DIR/$SOURCE" # if $SOURCE was a relative symlink, we need to resolve it relative to the path where the symlink file was located 13 | done 14 | PROJECT_DIR="$( cd -P "$( dirname "$SOURCE" )" && pwd )" 15 | 16 | source "$PROJECT_DIR/build.sh" 17 | get_webrtc $@ --------------------------------------------------------------------------------