blob: d6eaa1e0155e1a8412ec4a933192902b58a1420b [file] [log] [blame]
tkchin9eeb6242016-04-27 01:54:20 -07001# Copyright 2016 The WebRTC project authors. All Rights Reserved.
2#
3# Use of this source code is governed by a BSD-style license
4# that can be found in the LICENSE file in the root of the source
5# tree. An additional intellectual property rights grant can be found
6# in the file PATENTS. All contributing project authors may
7# be found in the AUTHORS file in the root of the source tree.
8
9{
10 'includes': [
11 '../build/common.gypi',
12 'sdk.gypi',
13 ],
14 'conditions': [
15 ['OS=="ios" or (OS=="mac" and mac_deployment_target=="10.7")', {
16 'targets': [
17 {
18 'target_name': 'rtc_sdk_common_objc',
19 'type': 'static_library',
20 'includes': [ '../build/objc_common.gypi' ],
21 'dependencies': [
22 '../base/base.gyp:rtc_base',
23 ],
24 'include_dirs': [
25 'objc/Framework/Classes',
26 'objc/Framework/Headers',
27 ],
28 'direct_dependent_settings': {
29 'include_dirs': [
30 'objc/Framework/Classes',
31 'objc/Framework/Headers',
32 ],
33 },
34 'sources': [
35 'objc/Framework/Classes/NSString+StdString.h',
36 'objc/Framework/Classes/NSString+StdString.mm',
37 'objc/Framework/Classes/RTCDispatcher.m',
38 'objc/Framework/Classes/RTCFieldTrials.mm',
39 'objc/Framework/Classes/RTCLogging.mm',
asapersson0ab07d62016-06-08 04:59:16 -070040 'objc/Framework/Classes/RTCMetrics.mm',
41 'objc/Framework/Classes/RTCMetricsSampleInfo+Private.h',
42 'objc/Framework/Classes/RTCMetricsSampleInfo.mm',
tkchin9eeb6242016-04-27 01:54:20 -070043 'objc/Framework/Classes/RTCSSLAdapter.mm',
44 'objc/Framework/Classes/RTCTracing.mm',
45 'objc/Framework/Headers/WebRTC/RTCDispatcher.h',
46 'objc/Framework/Headers/WebRTC/RTCFieldTrials.h',
47 'objc/Framework/Headers/WebRTC/RTCLogging.h',
48 'objc/Framework/Headers/WebRTC/RTCMacros.h',
asapersson0ab07d62016-06-08 04:59:16 -070049 'objc/Framework/Headers/WebRTC/RTCMetrics.h',
50 'objc/Framework/Headers/WebRTC/RTCMetricsSampleInfo.h',
tkchin9eeb6242016-04-27 01:54:20 -070051 'objc/Framework/Headers/WebRTC/RTCSSLAdapter.h',
52 'objc/Framework/Headers/WebRTC/RTCTracing.h',
53 ],
54 'conditions': [
55 ['OS=="ios"', {
56 'sources': [
57 'objc/Framework/Classes/RTCCameraPreviewView.m',
58 'objc/Framework/Classes/RTCUIApplication.h',
59 'objc/Framework/Classes/RTCUIApplication.mm',
tkchind7629102016-07-28 14:52:55 -070060 'objc/Framework/Classes/UIDevice+RTCDevice.mm',
tkchin9eeb6242016-04-27 01:54:20 -070061 'objc/Framework/Headers/WebRTC/RTCCameraPreviewView.h',
tkchind7629102016-07-28 14:52:55 -070062 'objc/Framework/Headers/WebRTC/UIDevice+RTCDevice.h',
tkchin9eeb6242016-04-27 01:54:20 -070063 ],
64 'link_settings': {
65 'xcode_settings': {
66 'OTHER_LDFLAGS': [
67 '-framework AVFoundation',
68 ],
69 },
70 },
71 }], # OS=="ios"
72 ['build_with_chromium==0', {
73 'sources': [
74 'objc/Framework/Classes/RTCFileLogger.mm',
75 'objc/Framework/Headers/WebRTC/RTCFileLogger.h',
76 ],
77 }],
78 ],
79 },
80 {
81 'target_name': 'rtc_sdk_peerconnection_objc',
82 'type': 'static_library',
83 'includes': [ '../build/objc_common.gypi' ],
84 'dependencies': [
85 '<(webrtc_root)/api/api.gyp:libjingle_peerconnection',
86 'rtc_sdk_common_objc',
87 ],
88 'include_dirs': [
89 'objc/Framework/Classes',
90 'objc/Framework/Headers',
91 ],
92 'direct_dependent_settings': {
93 'include_dirs': [
94 'objc/Framework/Classes',
95 'objc/Framework/Headers',
96 ],
97 },
98 'link_settings': {
adam.fedorfc22e032016-06-08 17:24:37 -070099 'xcode_settings': {
100 'OTHER_LDFLAGS': [
101 '-framework AVFoundation',
102 ],
103 },
tkchin9eeb6242016-04-27 01:54:20 -0700104 'libraries': [
105 '-lstdc++',
106 ],
107 }, # link_settings
108 'sources': [
adam.fedorfc22e032016-06-08 17:24:37 -0700109 'objc/Framework/Classes/RTCAVFoundationVideoSource+Private.h',
110 'objc/Framework/Classes/RTCAVFoundationVideoSource.mm',
tkchind4bfbfc2016-08-30 11:56:05 -0700111 'objc/Framework/Classes/RTCAudioSource+Private.h',
112 'objc/Framework/Classes/RTCAudioSource.mm',
tkchin04dbb342016-08-08 03:10:07 -0700113 'objc/Framework/Classes/RTCAudioTrack+Private.h',
114 'objc/Framework/Classes/RTCAudioTrack.mm',
tkchin9eeb6242016-04-27 01:54:20 -0700115 'objc/Framework/Classes/RTCConfiguration+Private.h',
116 'objc/Framework/Classes/RTCConfiguration.mm',
117 'objc/Framework/Classes/RTCDataChannel+Private.h',
118 'objc/Framework/Classes/RTCDataChannel.mm',
119 'objc/Framework/Classes/RTCDataChannelConfiguration+Private.h',
120 'objc/Framework/Classes/RTCDataChannelConfiguration.mm',
tkchin04dbb342016-08-08 03:10:07 -0700121 'objc/Framework/Classes/RTCI420Shader.mm',
tkchin9eeb6242016-04-27 01:54:20 -0700122 'objc/Framework/Classes/RTCIceCandidate+Private.h',
123 'objc/Framework/Classes/RTCIceCandidate.mm',
124 'objc/Framework/Classes/RTCIceServer+Private.h',
125 'objc/Framework/Classes/RTCIceServer.mm',
126 'objc/Framework/Classes/RTCMediaConstraints+Private.h',
127 'objc/Framework/Classes/RTCMediaConstraints.mm',
tkchind4bfbfc2016-08-30 11:56:05 -0700128 'objc/Framework/Classes/RTCMediaSource+Private.h',
129 'objc/Framework/Classes/RTCMediaSource.mm',
tkchin9eeb6242016-04-27 01:54:20 -0700130 'objc/Framework/Classes/RTCMediaStream+Private.h',
131 'objc/Framework/Classes/RTCMediaStream.mm',
132 'objc/Framework/Classes/RTCMediaStreamTrack+Private.h',
133 'objc/Framework/Classes/RTCMediaStreamTrack.mm',
tkchin04dbb342016-08-08 03:10:07 -0700134 'objc/Framework/Classes/RTCOpenGLDefines.h',
tkchin9eeb6242016-04-27 01:54:20 -0700135 'objc/Framework/Classes/RTCOpenGLVideoRenderer.h',
136 'objc/Framework/Classes/RTCOpenGLVideoRenderer.mm',
137 'objc/Framework/Classes/RTCPeerConnection+DataChannel.mm',
138 'objc/Framework/Classes/RTCPeerConnection+Private.h',
139 'objc/Framework/Classes/RTCPeerConnection+Stats.mm',
140 'objc/Framework/Classes/RTCPeerConnection.mm',
141 'objc/Framework/Classes/RTCPeerConnectionFactory+Private.h',
142 'objc/Framework/Classes/RTCPeerConnectionFactory.mm',
143 'objc/Framework/Classes/RTCRtpCodecParameters+Private.h',
144 'objc/Framework/Classes/RTCRtpCodecParameters.mm',
145 'objc/Framework/Classes/RTCRtpEncodingParameters+Private.h',
146 'objc/Framework/Classes/RTCRtpEncodingParameters.mm',
147 'objc/Framework/Classes/RTCRtpParameters+Private.h',
148 'objc/Framework/Classes/RTCRtpParameters.mm',
Taylor Brandstetterdb0cd9e2016-05-16 11:40:30 -0700149 'objc/Framework/Classes/RTCRtpReceiver+Private.h',
150 'objc/Framework/Classes/RTCRtpReceiver.mm',
tkchin9eeb6242016-04-27 01:54:20 -0700151 'objc/Framework/Classes/RTCRtpSender+Private.h',
152 'objc/Framework/Classes/RTCRtpSender.mm',
153 'objc/Framework/Classes/RTCSessionDescription+Private.h',
154 'objc/Framework/Classes/RTCSessionDescription.mm',
tkchin04dbb342016-08-08 03:10:07 -0700155 'objc/Framework/Classes/RTCShader+Private.h',
156 'objc/Framework/Classes/RTCShader.h',
157 'objc/Framework/Classes/RTCShader.mm',
tkchin9eeb6242016-04-27 01:54:20 -0700158 'objc/Framework/Classes/RTCStatsReport+Private.h',
159 'objc/Framework/Classes/RTCStatsReport.mm',
160 'objc/Framework/Classes/RTCVideoFrame+Private.h',
161 'objc/Framework/Classes/RTCVideoFrame.mm',
162 'objc/Framework/Classes/RTCVideoRendererAdapter+Private.h',
163 'objc/Framework/Classes/RTCVideoRendererAdapter.h',
164 'objc/Framework/Classes/RTCVideoRendererAdapter.mm',
165 'objc/Framework/Classes/RTCVideoSource+Private.h',
166 'objc/Framework/Classes/RTCVideoSource.mm',
167 'objc/Framework/Classes/RTCVideoTrack+Private.h',
168 'objc/Framework/Classes/RTCVideoTrack.mm',
adam.fedorfc22e032016-06-08 17:24:37 -0700169 'objc/Framework/Classes/avfoundationvideocapturer.h',
170 'objc/Framework/Classes/avfoundationvideocapturer.mm',
adam.fedorfc22e032016-06-08 17:24:37 -0700171 'objc/Framework/Headers/WebRTC/RTCAVFoundationVideoSource.h',
tkchind4bfbfc2016-08-30 11:56:05 -0700172 'objc/Framework/Headers/WebRTC/RTCAudioSource.h',
tkchin04dbb342016-08-08 03:10:07 -0700173 'objc/Framework/Headers/WebRTC/RTCAudioTrack.h',
tkchin9eeb6242016-04-27 01:54:20 -0700174 'objc/Framework/Headers/WebRTC/RTCConfiguration.h',
175 'objc/Framework/Headers/WebRTC/RTCDataChannel.h',
176 'objc/Framework/Headers/WebRTC/RTCDataChannelConfiguration.h',
177 'objc/Framework/Headers/WebRTC/RTCIceCandidate.h',
178 'objc/Framework/Headers/WebRTC/RTCIceServer.h',
179 'objc/Framework/Headers/WebRTC/RTCMediaConstraints.h',
tkchind4bfbfc2016-08-30 11:56:05 -0700180 'objc/Framework/Headers/WebRTC/RTCMediaSource.h',
tkchin9eeb6242016-04-27 01:54:20 -0700181 'objc/Framework/Headers/WebRTC/RTCMediaStream.h',
182 'objc/Framework/Headers/WebRTC/RTCMediaStreamTrack.h',
183 'objc/Framework/Headers/WebRTC/RTCPeerConnection.h',
184 'objc/Framework/Headers/WebRTC/RTCPeerConnectionFactory.h',
185 'objc/Framework/Headers/WebRTC/RTCRtpCodecParameters.h',
186 'objc/Framework/Headers/WebRTC/RTCRtpEncodingParameters.h',
187 'objc/Framework/Headers/WebRTC/RTCRtpParameters.h',
Taylor Brandstetterdb0cd9e2016-05-16 11:40:30 -0700188 'objc/Framework/Headers/WebRTC/RTCRtpReceiver.h',
tkchin9eeb6242016-04-27 01:54:20 -0700189 'objc/Framework/Headers/WebRTC/RTCRtpSender.h',
190 'objc/Framework/Headers/WebRTC/RTCSessionDescription.h',
191 'objc/Framework/Headers/WebRTC/RTCStatsReport.h',
192 'objc/Framework/Headers/WebRTC/RTCVideoFrame.h',
193 'objc/Framework/Headers/WebRTC/RTCVideoRenderer.h',
194 'objc/Framework/Headers/WebRTC/RTCVideoSource.h',
195 'objc/Framework/Headers/WebRTC/RTCVideoTrack.h',
196 ], # sources
197 'conditions': [
magjed2ab012c2016-08-25 03:25:04 -0700198 ['build_libyuv==1', {
199 'dependencies': ['<(DEPTH)/third_party/libyuv/libyuv.gyp:libyuv'],
200 }],
tkchin9eeb6242016-04-27 01:54:20 -0700201 ['OS=="ios"', {
202 'sources': [
tkchin9eeb6242016-04-27 01:54:20 -0700203 'objc/Framework/Classes/RTCEAGLVideoView.m',
tkchin04dbb342016-08-08 03:10:07 -0700204 'objc/Framework/Classes/RTCNativeNV12Shader.mm',
tkchin9eeb6242016-04-27 01:54:20 -0700205 'objc/Framework/Headers/WebRTC/RTCEAGLVideoView.h',
206 ],
207 'link_settings': {
208 'xcode_settings': {
209 'OTHER_LDFLAGS': [
210 '-framework CoreGraphics',
211 '-framework GLKit',
212 '-framework OpenGLES',
213 '-framework QuartzCore',
214 ],
215 },
216 }, # link_settings
217 }], # OS=="ios"
218 ['OS=="mac"', {
219 'sources': [
220 'objc/Framework/Classes/RTCNSGLVideoView.m',
221 'objc/Framework/Headers/WebRTC/RTCNSGLVideoView.h',
222 ],
223 'link_settings': {
224 'xcode_settings': {
225 'OTHER_LDFLAGS': [
adam.fedorfc22e032016-06-08 17:24:37 -0700226 '-framework CoreMedia',
tkchin9eeb6242016-04-27 01:54:20 -0700227 '-framework OpenGL',
228 ],
229 },
230 },
231 }],
232 ], # conditions
233 }, # rtc_sdk_peerconnection_objc
234 {
235 'target_name': 'rtc_sdk_framework_objc',
236 'type': 'shared_library',
237 'product_name': 'WebRTC',
238 'mac_bundle': 1,
239 'includes': [ '../build/objc_common.gypi' ],
240 # Slightly hacky, but we need to re-declare files here that are C
241 # interfaces because otherwise they will be dead-stripped during
242 # linking (ObjC classes cannot be dead-stripped). We might consider
243 # just only using ObjC interfaces.
244 'sources': [
245 'objc/Framework/Classes/RTCFieldTrials.mm',
246 'objc/Framework/Classes/RTCLogging.mm',
tkchin5d3f2ba2016-07-08 13:03:58 -0700247 'objc/Framework/Classes/RTCMetrics.mm',
tkchin9eeb6242016-04-27 01:54:20 -0700248 'objc/Framework/Classes/RTCSSLAdapter.mm',
249 'objc/Framework/Classes/RTCTracing.mm',
250 'objc/Framework/Headers/WebRTC/RTCFieldTrials.h',
251 'objc/Framework/Headers/WebRTC/RTCLogging.h',
252 'objc/Framework/Headers/WebRTC/RTCSSLAdapter.h',
253 'objc/Framework/Headers/WebRTC/RTCTracing.h',
254 'objc/Framework/Headers/WebRTC/WebRTC.h',
255 'objc/Framework/Modules/module.modulemap',
256 ],
257 'mac_framework_headers': [
VladimirTechMana264ecc2016-09-07 23:11:25 -0700258 'objc/Framework/Headers/WebRTC/RTCAudioSource.h',
kjellander7e927462016-05-23 22:13:44 -0700259 'objc/Framework/Headers/WebRTC/RTCAudioTrack.h',
260 'objc/Framework/Headers/WebRTC/RTCAVFoundationVideoSource.h',
261 'objc/Framework/Headers/WebRTC/RTCCameraPreviewView.h',
262 'objc/Framework/Headers/WebRTC/RTCConfiguration.h',
263 'objc/Framework/Headers/WebRTC/RTCDataChannel.h',
264 'objc/Framework/Headers/WebRTC/RTCDataChannelConfiguration.h',
265 'objc/Framework/Headers/WebRTC/RTCDispatcher.h',
266 'objc/Framework/Headers/WebRTC/RTCEAGLVideoView.h',
267 'objc/Framework/Headers/WebRTC/RTCFieldTrials.h',
268 'objc/Framework/Headers/WebRTC/RTCFileLogger.h',
269 'objc/Framework/Headers/WebRTC/RTCIceCandidate.h',
270 'objc/Framework/Headers/WebRTC/RTCIceServer.h',
271 'objc/Framework/Headers/WebRTC/RTCLogging.h',
272 'objc/Framework/Headers/WebRTC/RTCMacros.h',
273 'objc/Framework/Headers/WebRTC/RTCMediaConstraints.h',
VladimirTechMana264ecc2016-09-07 23:11:25 -0700274 'objc/Framework/Headers/WebRTC/RTCMediaSource.h',
kjellander7e927462016-05-23 22:13:44 -0700275 'objc/Framework/Headers/WebRTC/RTCMediaStream.h',
276 'objc/Framework/Headers/WebRTC/RTCMediaStreamTrack.h',
tkchin5d3f2ba2016-07-08 13:03:58 -0700277 'objc/Framework/Headers/WebRTC/RTCMetrics.h',
278 'objc/Framework/Headers/WebRTC/RTCMetricsSampleInfo.h',
kjellander7e927462016-05-23 22:13:44 -0700279 'objc/Framework/Headers/WebRTC/RTCNSGLVideoView.h',
280 'objc/Framework/Headers/WebRTC/RTCPeerConnection.h',
281 'objc/Framework/Headers/WebRTC/RTCPeerConnectionFactory.h',
282 'objc/Framework/Headers/WebRTC/RTCRtpCodecParameters.h',
283 'objc/Framework/Headers/WebRTC/RTCRtpEncodingParameters.h',
284 'objc/Framework/Headers/WebRTC/RTCRtpParameters.h',
285 'objc/Framework/Headers/WebRTC/RTCRtpReceiver.h',
286 'objc/Framework/Headers/WebRTC/RTCRtpSender.h',
287 'objc/Framework/Headers/WebRTC/RTCSessionDescription.h',
288 'objc/Framework/Headers/WebRTC/RTCSSLAdapter.h',
289 'objc/Framework/Headers/WebRTC/RTCStatsReport.h',
290 'objc/Framework/Headers/WebRTC/RTCTracing.h',
291 'objc/Framework/Headers/WebRTC/RTCVideoFrame.h',
292 'objc/Framework/Headers/WebRTC/RTCVideoRenderer.h',
293 'objc/Framework/Headers/WebRTC/RTCVideoSource.h',
294 'objc/Framework/Headers/WebRTC/RTCVideoTrack.h',
tkchind7629102016-07-28 14:52:55 -0700295 'objc/Framework/Headers/WebRTC/UIDevice+RTCDevice.h',
kjellander7e927462016-05-23 22:13:44 -0700296 'objc/Framework/Headers/WebRTC/WebRTC.h',
tkchin9eeb6242016-04-27 01:54:20 -0700297 ],
298 'dependencies': [
299 '<(webrtc_root)/system_wrappers/system_wrappers.gyp:field_trial_default',
kjellander98bba392016-06-01 05:28:54 -0700300 '<(webrtc_root)/system_wrappers/system_wrappers.gyp:metrics_default',
tkchin9eeb6242016-04-27 01:54:20 -0700301 'rtc_sdk_peerconnection_objc',
302 ],
303 'xcode_settings': {
304 'CODE_SIGNING_REQUIRED': 'NO',
305 'CODE_SIGN_IDENTITY': '',
306 'DEFINES_MODULE': 'YES',
307 'INFOPLIST_FILE': 'objc/Framework/Info.plist',
308 'LD_DYLIB_INSTALL_NAME': '@rpath/WebRTC.framework/WebRTC',
309 'MODULEMAP_FILE': '<(webrtc_root)/sdk/Framework/Modules/module.modulemap',
310 },
311 'link_settings': {
312 'xcode_settings': {
313 'OTHER_LDFLAGS': [
314 '-framework AVFoundation',
315 '-framework AudioToolbox',
316 '-framework CoreGraphics',
317 '-framework CoreMedia',
318 '-framework GLKit',
319 '-framework VideoToolbox',
320 ],
321 },
322 }, # link_settings
323 'conditions': [
324 # TODO(tkchin): Generate WebRTC.h based off of
325 # mac_framework_headers instead of hard-coding. Ok for now since we
326 # only really care about dynamic lib on iOS outside of chromium.
327 ['OS!="mac"', {
328 'mac_framework_headers!': [
329 'objc/Framework/Headers/WebRTC/RTCNSGLVideoView.h',
330 ],
331 }],
332 ['build_with_chromium==1', {
333 'mac_framework_headers!': [
334 'objc/Framework/Headers/WebRTC/RTCFileLogger.h',
335 ],
336 }],
337 ], # conditions
338 }, # rtc_sdk_framework_objc
339 ], # targets
340 }], # OS=="ios" or (OS=="mac" and mac_deployment_target=="10.7")
341 ],
342}