| We want to generate a dynamic framework for a CocoaPod. Unfortunately, using gyp-xcode generation |
| for a framework currently presents some issues. To get around those issues, we chose to create a |
| project with Xcode for building the framework directly. |
| |
| The Framework directory contains the Xcode project used to build the framework. The PodTest |
| directory contains a project used to confirm that the built framework installs correctly with |
| CocoaPods. The build_ios_framework.sh script needs to be run first, then `pod install` should be run |
| in the same directory as the Xcode project. After installing, the PodTest.xcworkspace should be used |
| instead of PodTest.xcodeproj. |
| |
| USAGE |
| To build the framework, run the build_ios_framework.sh script. This will build static libraries for |
| iOS (via the build_ios_libs.sh script), collect header files and adjust import/include statements |
| for use inside the framework, build the framework using the Xcode project, merge multiple |
| architectures together, and collect the framework files (the .framework itself and the .dSYM) with |
| the Podspec into a common directory. |
| |
| DETAILS OF THE XCODE PROJECT |
| The Xcode project contains relative references to the built static libraries (from |
| build_ios_libs.sh), with the exception of librtc_api_objc and librtc_base_objc. The iOS source files |
| from webrtc/api/objc and webrtc/base/objc are also included. NOTE: This will require updating |
| if/when the built static libraries change. |
| |
| The flattened header files for webrtc/api/objc and webrtc/base/objc were also added to the Public |
| Headers of the framework target. NOTE: This will require updating as the Obj-C API changes. |
| |
| Preprocessor definitions were copied from a gyp-xcode generated project. |
| |
| RTTI was disabled due to compiler errors and based on the setting in build/common.gypi |
| (https://code.google.com/p/chromium/codesearch#chromium/src/build/common.gypi&q=rtti&sq=package:chromium&type=cs&l=5069). |
| |
| Bitcode is disabled for the time being. |
| |
| The minimum number of system frameworks were linked against based on build errors (currently |
| AVFoundation, AudioToolbox, CoreMedia, VideoToolbox). |
| |
| The Build Products Path (SYMROOT) was changed to $SRCROOT/build so the build products are in a known |
| location. |
| |
| The created WebRTC scheme was shared so the build_ios_framework.sh script will work on any machine |
| that runs it. |
| |
| DEPLOYMENT_POSTPROCESSING is set to "Yes" so debug symbols will be stripped (the iOS Default for |
| STRIP_INSTALLED_PRODUCT is already set to "Yes"). |
| |
| "-ObjC" is added to OTHER_LDFLAGS to ensure category methods (in particular, those from |
| RTCAudioSession+Configuration.mm) are included in the framework binary. |
| |
| During the build process, dSYMs will be generated for each architecture alongside each framework |
| bundle. These are merged together and placed alongside the final framework product. |