blob: 1ef7de274481a96b598267978d2009b8a92c0821 [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
mbonadei9aa3f0a2017-01-24 06:58:22 -08009import("../webrtc.gni")
kthelgasonebc34e72016-09-15 04:30:18 -070010if (is_ios) {
11 import("//build/config/ios/rules.gni")
oprypin45197522017-06-22 01:47:20 -070012 import("//build/config/ios/ios_sdk.gni")
kthelgasonebc34e72016-09-15 04:30:18 -070013}
tkchin9eeb6242016-04-27 01:54:20 -070014
kthelgason2f088792017-05-30 01:48:47 -070015declare_args() {
16 # Determine whether or not to include metal rendering
17 rtc_use_metal_rendering = is_mac || (is_ios && current_cpu == "arm64")
18}
19
kjellander6ceab082016-10-28 05:44:03 -070020group("sdk") {
Henrik Kjellandera7d0df72017-06-27 08:56:46 +020021 public_deps = []
22 if (!build_with_chromium) {
23 if (is_android) {
24 public_deps += [ "android" ]
25 }
26 if (is_ios) {
kthelgason36d658d2017-08-24 05:43:45 -070027 public_deps += [ ":framework_objc" ]
Henrik Kjellandera7d0df72017-06-27 08:56:46 +020028 }
kjellander6ceab082016-10-28 05:44:03 -070029 }
30}
31
kthelgasoncc2d1c62016-11-09 07:44:27 -080032if (is_ios || is_mac) {
kthelgason36d658d2017-08-24 05:43:45 -070033 config("common_config_objc") {
kjellander080a1e32016-05-25 11:37:11 -070034 include_dirs = [
35 "objc/Framework/Classes",
kthelgason2f088792017-05-30 01:48:47 -070036 "objc/Framework/Classes/Audio",
37 "objc/Framework/Classes/Common",
38 "objc/Framework/Classes/Metal",
39 "objc/Framework/Classes/PeerConnection",
40 "objc/Framework/Classes/UI",
41 "objc/Framework/Classes/Video",
42 "objc/Framework/Classes/VideoToolbox",
kjellander080a1e32016-05-25 11:37:11 -070043 "objc/Framework/Headers",
44 ]
Kári Tristan Helgason47d3a012017-10-24 15:28:51 +020045 cflags = [
46 "-Wstrict-overflow",
47 "-Wmissing-field-initializers",
48 ]
kjellander080a1e32016-05-25 11:37:11 -070049 }
50
kthelgason36d658d2017-08-24 05:43:45 -070051 rtc_static_library("common_objc") {
tkchin9eeb6242016-04-27 01:54:20 -070052 sources = [
kthelgason2f088792017-05-30 01:48:47 -070053 "objc/Framework/Classes/Common/NSString+StdString.h",
54 "objc/Framework/Classes/Common/NSString+StdString.mm",
55 "objc/Framework/Classes/Common/RTCDispatcher+Private.h",
56 "objc/Framework/Classes/Common/RTCDispatcher.m",
57 "objc/Framework/Classes/Common/RTCFieldTrials.mm",
58 "objc/Framework/Classes/Common/RTCLogging.mm",
Anders Carlssonfc309752017-06-12 14:16:20 +020059 "objc/Framework/Classes/Common/RTCUIApplicationStatusObserver.h",
60 "objc/Framework/Classes/Common/RTCUIApplicationStatusObserver.m",
kthelgason2f088792017-05-30 01:48:47 -070061 "objc/Framework/Classes/Common/helpers.h",
62 "objc/Framework/Classes/Common/helpers.mm",
Kári Tristan Helgasona17ddcd2017-09-28 19:28:52 +020063 "objc/Framework/Classes/Common/scoped_cftyperef.h",
tkchin9eeb6242016-04-27 01:54:20 -070064 "objc/Framework/Headers/WebRTC/RTCDispatcher.h",
65 "objc/Framework/Headers/WebRTC/RTCFieldTrials.h",
66 "objc/Framework/Headers/WebRTC/RTCLogging.h",
67 "objc/Framework/Headers/WebRTC/RTCMacros.h",
tkchin9eeb6242016-04-27 01:54:20 -070068 ]
denicijad2088152017-04-28 02:14:54 -070069
mbonadei1e060c62017-04-21 00:02:02 -070070 deps = [
Patrik Höglunda8005cf2017-12-13 16:05:42 +010071 "../rtc_base:checks",
ehmaldonadof6a861a2017-07-19 10:40:47 -070072 "../rtc_base:rtc_base",
mbonadei1e060c62017-04-21 00:02:02 -070073 ]
kthelgasonc0977102017-04-24 00:57:16 -070074 configs += [ "..:common_objc" ]
75
kthelgason36d658d2017-08-24 05:43:45 -070076 public_configs = [ ":common_config_objc" ]
denicijad2088152017-04-28 02:14:54 -070077
kjellander3bcedd32016-06-08 01:14:15 -070078 if (is_ios) {
79 sources += [
kthelgason2f088792017-05-30 01:48:47 -070080 "objc/Framework/Classes/Common/UIDevice+RTCDevice.mm",
tkchind7629102016-07-28 14:52:55 -070081 "objc/Framework/Headers/WebRTC/UIDevice+RTCDevice.h",
kjellander3bcedd32016-06-08 01:14:15 -070082 ]
denicijad2088152017-04-28 02:14:54 -070083 }
84
kthelgason2f088792017-05-30 01:48:47 -070085 if (!build_with_chromium) {
denicijad2088152017-04-28 02:14:54 -070086 sources += [
Anders Carlsson3b3364e2018-01-30 15:46:13 +010087 "objc/Framework/Classes/Common/RTCCallbackLogger.mm",
kthelgason2f088792017-05-30 01:48:47 -070088 "objc/Framework/Classes/Common/RTCFileLogger.mm",
Anders Carlsson3b3364e2018-01-30 15:46:13 +010089 "objc/Framework/Headers/WebRTC/RTCCallbackLogger.h",
kthelgason2f088792017-05-30 01:48:47 -070090 "objc/Framework/Headers/WebRTC/RTCFileLogger.h",
91 ]
92 }
93 }
94
mbonadei2c8ac1b2017-05-31 05:14:26 -070095 if (!build_with_chromium) {
Kári Tristan Helgason99bf77c2018-02-16 10:49:22 +010096 if (is_ios) {
97 rtc_static_library("audio_objc") {
98 sources = [
99 "objc/Framework/Classes/Audio/RTCAudioSession+Configuration.mm",
100 "objc/Framework/Classes/Audio/RTCAudioSession+Private.h",
101 "objc/Framework/Classes/Audio/RTCAudioSession.mm",
102 "objc/Framework/Classes/Audio/RTCAudioSessionConfiguration.m",
103 "objc/Framework/Headers/WebRTC/RTCAudioSession.h",
104 "objc/Framework/Headers/WebRTC/RTCAudioSessionConfiguration.h",
105 ]
106 configs += [ "..:common_objc" ]
denicija59ee91b2017-06-05 05:48:47 -0700107
Kári Tristan Helgason99bf77c2018-02-16 10:49:22 +0100108 public_configs = [ ":common_config_objc" ]
Anders Carlsson8ecfd802017-09-15 14:07:30 +0200109
Kári Tristan Helgason99bf77c2018-02-16 10:49:22 +0100110 deps = [
111 ":common_objc",
112 "../rtc_base:checks",
113 "../rtc_base:rtc_base_approved",
114 ]
denicija59ee91b2017-06-05 05:48:47 -0700115
Kári Tristan Helgason99bf77c2018-02-16 10:49:22 +0100116 if (is_clang) {
117 # Suppress warnings from the Chromium Clang plugin
118 # (bugs.webrtc.org/163).
119 suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
120 }
denicija59ee91b2017-06-05 05:48:47 -0700121 }
122 }
zhihuanga4c113a2017-06-28 14:05:44 -0700123
Anders Carlsson9823ee42018-03-07 10:32:03 +0100124 rtc_static_library("videosource_objc") {
zhihuanga4c113a2017-06-28 14:05:44 -0700125 sources = [
Anders Carlsson9823ee42018-03-07 10:32:03 +0100126 "objc/Framework/Classes/PeerConnection/RTCVideoSource+Private.h",
127 "objc/Framework/Classes/PeerConnection/RTCVideoSource.mm",
128 "objc/Framework/Headers/WebRTC/RTCVideoSource.h",
zhihuanga4c113a2017-06-28 14:05:44 -0700129 ]
130
131 deps = [
kthelgason36d658d2017-08-24 05:43:45 -0700132 ":common_objc",
Anders Carlsson9823ee42018-03-07 10:32:03 +0100133 ":mediasource_objc",
134 ":native_video",
Kári Tristan Helgason99bf77c2018-02-16 10:49:22 +0100135 ":videoframebuffer_objc",
zhihuanga4c113a2017-06-28 14:05:44 -0700136 "../api:libjingle_peerconnection_api",
137 "../api:video_frame_api",
Patrik Höglundb874a352017-11-27 14:32:41 +0100138 "../api:video_frame_api_i420",
zhihuanga4c113a2017-06-28 14:05:44 -0700139 "../common_video",
140 "../media:rtc_media_base",
Patrik Höglunda8005cf2017-12-13 16:05:42 +0100141 "../rtc_base:checks",
ehmaldonadof6a861a2017-07-19 10:40:47 -0700142 "../rtc_base:rtc_base",
Mirko Bonadei401d0562017-12-14 11:24:00 +0100143 "//third_party/libyuv",
zhihuanga4c113a2017-06-28 14:05:44 -0700144 ]
145
146 configs += [ "..:common_objc" ]
147 if (!build_with_chromium && is_clang) {
148 # Suppress warnings from the Chromium Clang plugin
149 # (bugs.webrtc.org/163).
150 suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
151 }
152 }
153
Kári Tristan Helgason99bf77c2018-02-16 10:49:22 +0100154 rtc_static_library("videoframebuffer_objc") {
155 sources = [
Kári Tristan Helgason99bf77c2018-02-16 10:49:22 +0100156 "objc/Framework/Classes/PeerConnection/RTCVideoFrame.mm",
157 "objc/Framework/Classes/Video/RTCCVPixelBuffer.mm",
158 "objc/Framework/Classes/Video/RTCI420Buffer+Private.h",
159 "objc/Framework/Classes/Video/RTCI420Buffer.mm",
160 "objc/Framework/Headers/WebRTC/RTCVideoFrame.h",
161 "objc/Framework/Headers/WebRTC/RTCVideoFrameBuffer.h",
Kári Tristan Helgason99bf77c2018-02-16 10:49:22 +0100162 ]
163 deps = [
164 ":common_objc",
165 "//api:video_frame_api",
166 "//api:video_frame_api_i420",
167 "//common_video",
168 "//rtc_base:checks",
169 "//rtc_base:rtc_base_approved",
170 "//third_party/libyuv",
171 ]
172 configs += [ "..:common_objc" ]
173 }
174
kthelgason36d658d2017-08-24 05:43:45 -0700175 rtc_static_library("video_objc") {
kthelgason2f088792017-05-30 01:48:47 -0700176 sources = [
jtteh3b673c62017-07-25 15:48:39 -0700177 "objc/Framework/Classes/Video/AVCaptureSession+DevicePosition.h",
178 "objc/Framework/Classes/Video/AVCaptureSession+DevicePosition.mm",
mbonadei2c8ac1b2017-05-31 05:14:26 -0700179 "objc/Framework/Classes/Video/RTCDefaultShader.h",
180 "objc/Framework/Classes/Video/RTCDefaultShader.mm",
181 "objc/Framework/Classes/Video/RTCI420TextureCache.h",
182 "objc/Framework/Classes/Video/RTCI420TextureCache.mm",
183 "objc/Framework/Classes/Video/RTCOpenGLDefines.h",
184 "objc/Framework/Classes/Video/RTCShader.h",
185 "objc/Framework/Classes/Video/RTCShader.mm",
Kári Tristan Helgason99bf77c2018-02-16 10:49:22 +0100186 "objc/Framework/Headers/WebRTC/RTCVideoViewShading.h",
kthelgason2f088792017-05-30 01:48:47 -0700187 ]
mbonadei2c8ac1b2017-05-31 05:14:26 -0700188 libs = []
denicijad2088152017-04-28 02:14:54 -0700189 if (is_ios) {
denicija070d5e32017-02-26 11:44:13 -0800190 sources += [
mbonadei2c8ac1b2017-05-31 05:14:26 -0700191 "objc/Framework/Classes/Video/RTCNV12TextureCache.h",
192 "objc/Framework/Classes/Video/RTCNV12TextureCache.m",
193 ]
194 libs += [
195 "GLKit.framework",
196 "OpenGLES.framework",
197 "QuartzCore.framework",
198 ]
199 } else if (is_mac) {
mbonadei2c8ac1b2017-05-31 05:14:26 -0700200 libs += [
201 "CoreMedia.framework",
202 "CoreVideo.framework",
203 "OpenGL.framework",
denicija070d5e32017-02-26 11:44:13 -0800204 ]
205 }
mbonadei2c8ac1b2017-05-31 05:14:26 -0700206
kthelgason2f088792017-05-30 01:48:47 -0700207 deps = [
kthelgason36d658d2017-08-24 05:43:45 -0700208 ":common_objc",
Kári Tristan Helgason99bf77c2018-02-16 10:49:22 +0100209 ":mediaconstraints_objc",
Anders Carlsson3ff50fb2018-02-01 15:47:05 +0100210 ":native_video",
Kári Tristan Helgason99bf77c2018-02-16 10:49:22 +0100211 ":videoframebuffer_objc",
Anders Carlsson9823ee42018-03-07 10:32:03 +0100212 ":videosource_objc",
mbonadei2c8ac1b2017-05-31 05:14:26 -0700213 "../api:libjingle_peerconnection_api",
kwiberg84f6a3f2017-09-05 08:43:13 -0700214 "../api:optional",
Mirko Bonadei0594a7c2017-12-18 11:42:48 +0100215 "../api:video_frame_api",
mbonadei2c8ac1b2017-05-31 05:14:26 -0700216 "../common_video",
217 "../media:rtc_media_base",
Patrik Höglunda8005cf2017-12-13 16:05:42 +0100218 "../rtc_base:checks",
ehmaldonadof6a861a2017-07-19 10:40:47 -0700219 "../rtc_base:rtc_base",
tkchin9eeb6242016-04-27 01:54:20 -0700220 ]
mbonadei2c8ac1b2017-05-31 05:14:26 -0700221
kthelgason2f088792017-05-30 01:48:47 -0700222 configs += [ "..:common_objc" ]
ehmaldonadoda8dcfb2017-01-04 07:11:23 -0800223 if (!build_with_chromium && is_clang) {
zhihuanga4c113a2017-06-28 14:05:44 -0700224 # Suppress warnings from the Chromium Clang plugin
225 # (bugs.webrtc.org/163).
ehmaldonadoda8dcfb2017-01-04 07:11:23 -0800226 suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
227 }
228 }
ehmaldonadoda8dcfb2017-01-04 07:11:23 -0800229
kthelgason36d658d2017-08-24 05:43:45 -0700230 rtc_static_library("ui_objc") {
Per Kjellandera7f2d842018-01-10 15:54:53 +0000231 visibility = [ "*" ]
mbonadei2c8ac1b2017-05-31 05:14:26 -0700232 if (is_ios) {
233 sources = [
234 "objc/Framework/Classes/UI/RTCCameraPreviewView.m",
235 "objc/Framework/Classes/UI/RTCEAGLVideoView.m",
236 "objc/Framework/Headers/WebRTC/RTCCameraPreviewView.h",
237 "objc/Framework/Headers/WebRTC/RTCEAGLVideoView.h",
238 ]
239 }
240 if (is_mac) {
241 sources = [
242 "objc/Framework/Classes/UI/RTCNSGLVideoView.m",
243 "objc/Framework/Headers/WebRTC/RTCNSGLVideoView.h",
244 ]
245 }
246 configs += [ "..:common_objc" ]
247 deps = [
kthelgason36d658d2017-08-24 05:43:45 -0700248 ":common_objc",
Kári Tristan Helgason99bf77c2018-02-16 10:49:22 +0100249 ":video_objc",
250 ":videocapture_objc",
251 ":videoframebuffer_objc",
mbonadei2c8ac1b2017-05-31 05:14:26 -0700252 ]
253 }
kthelgasonebc34e72016-09-15 04:30:18 -0700254
mbonadei2c8ac1b2017-05-31 05:14:26 -0700255 if (rtc_use_metal_rendering) {
kthelgason36d658d2017-08-24 05:43:45 -0700256 rtc_static_library("metal_objc") {
Mirko Bonadeid68956d2018-02-16 17:55:36 +0100257 visibility = [ "*" ]
mbonadei2c8ac1b2017-05-31 05:14:26 -0700258 sources = [
259 "objc/Framework/Classes/Metal/RTCMTLI420Renderer.h",
260 "objc/Framework/Classes/Metal/RTCMTLI420Renderer.mm",
261 "objc/Framework/Classes/Metal/RTCMTLRenderer+Private.h",
262 "objc/Framework/Classes/Metal/RTCMTLRenderer.h",
263 "objc/Framework/Classes/Metal/RTCMTLRenderer.mm",
264 ]
265 if (is_ios) {
266 sources += [
267 "objc/Framework/Classes/Metal/RTCMTLNV12Renderer.h",
268 "objc/Framework/Classes/Metal/RTCMTLNV12Renderer.mm",
269 "objc/Framework/Classes/Metal/RTCMTLVideoView.m",
270 "objc/Framework/Headers/WebRTC/RTCMTLVideoView.h",
271 ]
272 }
273 if (is_mac) {
274 sources += [
275 "objc/Framework/Classes/Metal/RTCMTLNSVideoView.m",
276 "objc/Framework/Headers/WebRTC/RTCMTLNSVideoView.h",
277 ]
278 }
279 libs = [
280 "CoreVideo.framework",
281 "Metal.framework",
282 "MetalKit.framework",
283 ]
284 deps = [
Kári Tristan Helgason99bf77c2018-02-16 10:49:22 +0100285 ":common_objc",
286 ":peerconnectionfactory_base_objc",
kthelgason36d658d2017-08-24 05:43:45 -0700287 ":video_objc",
Kári Tristan Helgason99bf77c2018-02-16 10:49:22 +0100288 ":videoframebuffer_objc",
Anders Carlsson9823ee42018-03-07 10:32:03 +0100289 ":videorenderer_objc",
mbonadei2c8ac1b2017-05-31 05:14:26 -0700290 "../api:video_frame_api",
Patrik Höglunda8005cf2017-12-13 16:05:42 +0100291 "../rtc_base:checks",
ehmaldonadof6a861a2017-07-19 10:40:47 -0700292 "../rtc_base:rtc_base_approved",
mbonadei2c8ac1b2017-05-31 05:14:26 -0700293 ]
294 configs += [ "..:common_objc" ]
kthelgason36d658d2017-08-24 05:43:45 -0700295 public_configs = [ ":common_config_objc" ]
mbonadei2c8ac1b2017-05-31 05:14:26 -0700296 }
297 }
298
Kári Tristan Helgason99bf77c2018-02-16 10:49:22 +0100299 rtc_static_library("videocapture_objc") {
Per Kjellandera7f2d842018-01-10 15:54:53 +0000300 visibility = [ "*" ]
mbonadei2c8ac1b2017-05-31 05:14:26 -0700301 sources = [
zhihuanga4c113a2017-06-28 14:05:44 -0700302 "objc/Framework/Classes/PeerConnection/RTCCameraVideoCapturer.m",
Kári Tristan Helgason99bf77c2018-02-16 10:49:22 +0100303 "objc/Framework/Classes/PeerConnection/RTCVideoCapturer.m",
zhihuanga4c113a2017-06-28 14:05:44 -0700304 "objc/Framework/Headers/WebRTC/RTCCameraVideoCapturer.h",
Kári Tristan Helgason99bf77c2018-02-16 10:49:22 +0100305 "objc/Framework/Headers/WebRTC/RTCVideoCapturer.h",
zhihuanga4c113a2017-06-28 14:05:44 -0700306 ]
307 if (is_ios) {
308 sources += [
zhihuanga4c113a2017-06-28 14:05:44 -0700309 "objc/Framework/Classes/PeerConnection/RTCFileVideoCapturer.m",
Daniela012b56b2017-11-15 13:15:24 +0100310 "objc/Framework/Headers/WebRTC/RTCFileVideoCapturer.h",
zhihuanga4c113a2017-06-28 14:05:44 -0700311 ]
312 }
313 libs = [ "AVFoundation.framework" ]
314
zhihuanga4c113a2017-06-28 14:05:44 -0700315 configs += [ "..:common_objc" ]
316
kthelgason36d658d2017-08-24 05:43:45 -0700317 public_configs = [ ":common_config_objc" ]
zhihuanga4c113a2017-06-28 14:05:44 -0700318
319 if (!build_with_chromium && is_clang) {
320 # Suppress warnings from the Chromium Clang plugin
321 # (bugs.webrtc.org/163).
322 suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
323 }
324
325 deps = [
kthelgason36d658d2017-08-24 05:43:45 -0700326 ":common_objc",
kthelgason36d658d2017-08-24 05:43:45 -0700327 ":video_objc",
Kári Tristan Helgason99bf77c2018-02-16 10:49:22 +0100328 ":videoframebuffer_objc",
zhihuanga4c113a2017-06-28 14:05:44 -0700329 ]
zhihuanga4c113a2017-06-28 14:05:44 -0700330 }
331
Kári Tristan Helgason99bf77c2018-02-16 10:49:22 +0100332 rtc_static_library("videocodec_objc") {
333 sources = [
334 "objc/Framework/Classes/PeerConnection/RTCEncodedImage.mm",
335 "objc/Framework/Classes/PeerConnection/RTCRtpFragmentationHeader.mm",
336 "objc/Framework/Classes/PeerConnection/RTCVideoCodec+Private.h",
337 "objc/Framework/Classes/PeerConnection/RTCVideoCodec.mm",
kthelgasonfb143122017-07-25 07:55:58 -0700338 "objc/Framework/Classes/PeerConnection/RTCVideoCodecH264.mm",
Kári Tristan Helgason99bf77c2018-02-16 10:49:22 +0100339 "objc/Framework/Classes/PeerConnection/RTCVideoEncoderSettings.mm",
340 "objc/Framework/Headers/WebRTC/RTCVideoCodec.h",
341 "objc/Framework/Headers/WebRTC/RTCVideoCodecFactory.h",
342 "objc/Framework/Headers/WebRTC/RTCVideoCodecH264.h",
zhihuanga4c113a2017-06-28 14:05:44 -0700343 ]
zhihuanga4c113a2017-06-28 14:05:44 -0700344 if (!build_with_chromium && is_clang) {
345 # Suppress warnings from the Chromium Clang plugin
346 # (bugs.webrtc.org/163).
347 suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
348 }
Kári Tristan Helgason99bf77c2018-02-16 10:49:22 +0100349 visibility = [ "*" ]
350 public_configs = [ ":common_config_objc" ]
351 deps = [
kthelgason36d658d2017-08-24 05:43:45 -0700352 ":common_objc",
kthelgasonfb143122017-07-25 07:55:58 -0700353 "../api/video_codecs:video_codecs_api",
Kári Tristan Helgason99bf77c2018-02-16 10:49:22 +0100354 "../common_video",
zhihuanga4c113a2017-06-28 14:05:44 -0700355 "../media:rtc_media_base",
Kári Tristan Helgason99bf77c2018-02-16 10:49:22 +0100356 "../modules:module_api",
357 "../modules/video_coding:video_codec_interface",
358 "../rtc_base:rtc_base_approved",
kthelgasonfb143122017-07-25 07:55:58 -0700359 "../system_wrappers:field_trial_api",
zhihuanga4c113a2017-06-28 14:05:44 -0700360 ]
361 }
362
Anders Carlssondd8c1652018-01-30 10:32:13 +0100363 rtc_static_library("default_codec_factory_objc") {
364 sources = [
365 "objc/Framework/Classes/PeerConnection/RTCDefaultVideoDecoderFactory.m",
366 "objc/Framework/Classes/PeerConnection/RTCDefaultVideoEncoderFactory.m",
367 ]
368
369 deps = [
370 ":common_objc",
Kári Tristan Helgason99bf77c2018-02-16 10:49:22 +0100371 ":native_video",
372 ":videocodec_objc",
Anders Carlssondd8c1652018-01-30 10:32:13 +0100373 ]
374 if (rtc_use_builtin_sw_codecs) {
375 deps += [
376 ":vp8",
377 ":vp9",
378 ]
379 }
380 }
381
382 rtc_static_library("vp8") {
Kári Tristan Helgason99bf77c2018-02-16 10:49:22 +0100383 visibility = [ "*" ]
Anders Carlssondd8c1652018-01-30 10:32:13 +0100384 sources = [
385 "objc/Framework/Classes/PeerConnection/RTCVideoCodecVP8.mm",
Kári Tristan Helgason99bf77c2018-02-16 10:49:22 +0100386 "objc/Framework/Headers/WebRTC/RTCVideoDecoderVP8.h",
387 "objc/Framework/Headers/WebRTC/RTCVideoEncoderVP8.h",
Anders Carlssondd8c1652018-01-30 10:32:13 +0100388 ]
389
390 if (!build_with_chromium && is_clang) {
391 # Suppress warnings from the Chromium Clang plugin
392 # (bugs.webrtc.org/163).
393 suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
394 }
395
396 deps = [
Anders Carlsson9823ee42018-03-07 10:32:03 +0100397 ":wrapped_native_codec_objc",
Anders Carlssondd8c1652018-01-30 10:32:13 +0100398 "../modules/video_coding:webrtc_vp8",
399 "../system_wrappers:metrics_default",
400 ]
401 }
402
403 rtc_static_library("vp9") {
Kári Tristan Helgason99bf77c2018-02-16 10:49:22 +0100404 visibility = [ "*" ]
Anders Carlssondd8c1652018-01-30 10:32:13 +0100405 sources = [
406 "objc/Framework/Classes/PeerConnection/RTCVideoCodecVP9.mm",
Kári Tristan Helgason99bf77c2018-02-16 10:49:22 +0100407 "objc/Framework/Headers/WebRTC/RTCVideoDecoderVP9.h",
408 "objc/Framework/Headers/WebRTC/RTCVideoEncoderVP9.h",
Anders Carlssondd8c1652018-01-30 10:32:13 +0100409 ]
410
411 if (!build_with_chromium && is_clang) {
412 # Suppress warnings from the Chromium Clang plugin
413 # (bugs.webrtc.org/163).
414 suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
415 }
416
417 deps = [
Anders Carlsson9823ee42018-03-07 10:32:03 +0100418 ":wrapped_native_codec_objc",
Anders Carlssondd8c1652018-01-30 10:32:13 +0100419 "../modules/video_coding:webrtc_vp9",
420 "../system_wrappers:metrics_default",
421 ]
422 }
423
zhihuanga4c113a2017-06-28 14:05:44 -0700424 # Build the PeerConnectionFactory without audio/video support.
425 # This target depends on the objc_peeerconnectionfactory_base which still
426 # includes some audio/video related objects such as RTCAudioSource because
427 # these objects are just thin wrappers of native C++ interfaces required
428 # when implementing webrtc::PeerConnectionFactoryInterface and
429 # webrtc::PeerConnectionInterface.
Kári Tristan Helgasona2d89fc2018-03-06 10:18:43 +0100430 # The applications which only use WebRTC DataChannel can depend on this.
kthelgason36d658d2017-08-24 05:43:45 -0700431 rtc_static_library("peerconnectionfactory_no_media_objc") {
Per Kjellandera7f2d842018-01-10 15:54:53 +0000432 visibility = [ "*" ]
zhihuanga4c113a2017-06-28 14:05:44 -0700433 defines = [ "HAVE_NO_MEDIA" ]
434
435 sources = [
Kári Tristan Helgason99bf77c2018-02-16 10:49:22 +0100436 "objc/Framework/Classes/Common/noop.mm",
zhihuanga4c113a2017-06-28 14:05:44 -0700437 ]
438
kthelgason36d658d2017-08-24 05:43:45 -0700439 public_configs = [ ":common_config_objc" ]
zhihuanga4c113a2017-06-28 14:05:44 -0700440
441 if (!build_with_chromium && is_clang) {
442 # Suppress warnings from the Chromium Clang plugin
443 # (bugs.webrtc.org/163).
444 suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
445 }
446
447 deps = [
Anders Carlsson3ff50fb2018-02-01 15:47:05 +0100448 ":native_api",
449 ":native_video",
kthelgason36d658d2017-08-24 05:43:45 -0700450 ":peerconnectionfactory_base_objc",
zhihuanga4c113a2017-06-28 14:05:44 -0700451 "../api:libjingle_peerconnection_api",
ehmaldonadof6a861a2017-07-19 10:40:47 -0700452 "../rtc_base:rtc_base",
zhihuanga4c113a2017-06-28 14:05:44 -0700453 ]
454 }
455
Kári Tristan Helgason99bf77c2018-02-16 10:49:22 +0100456 rtc_static_library("mediaconstraints_objc") {
457 sources = [
458 "objc/Framework/Classes/PeerConnection/RTCMediaConstraints+Private.h",
459 "objc/Framework/Classes/PeerConnection/RTCMediaConstraints.mm",
460 "objc/Framework/Headers/WebRTC/RTCMediaConstraints.h",
461 ]
462 if (!build_with_chromium && is_clang) {
463 # Suppress warnings from the Chromium Clang plugin
464 # (bugs.webrtc.org/163).
465 suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
466 }
467
468 public_configs = [ ":common_config_objc" ]
469 deps = [
470 ":common_objc",
471 "../api:libjingle_peerconnection_api",
472 ]
473 }
474
Anders Carlsson9823ee42018-03-07 10:32:03 +0100475 rtc_source_set("videorenderer_objc") {
476 sources = [
477 "objc/Framework/Headers/WebRTC/RTCVideoRenderer.h",
478 ]
479
480 configs += [ "..:common_objc" ]
481 visibility = [ "*" ]
482 public_configs = [ ":common_config_objc" ]
483 }
484
485 rtc_static_library("videorendereradapter_objc") {
486 sources = [
487 "objc/Framework/Classes/PeerConnection/RTCVideoRendererAdapter+Private.h",
488 "objc/Framework/Classes/PeerConnection/RTCVideoRendererAdapter.h",
489 "objc/Framework/Classes/PeerConnection/RTCVideoRendererAdapter.mm",
490 ]
491
492 configs += [ "..:common_objc" ]
493 visibility = [ "*" ]
494 public_configs = [ ":common_config_objc" ]
495
496 deps = [
497 ":common_objc",
498 ":native_api",
499 ":videoframebuffer_objc",
500 ":videorenderer_objc",
501 "../api:libjingle_peerconnection_api",
502 ]
503 }
504
505 rtc_static_library("mediasource_objc") {
506 sources = [
507 "objc/Framework/Classes/PeerConnection/RTCMediaSource+Private.h",
508 "objc/Framework/Classes/PeerConnection/RTCMediaSource.mm",
509 "objc/Framework/Headers/WebRTC/RTCMediaSource.h",
510 ]
511
512 configs += [ "..:common_objc" ]
513 public_configs = [ ":common_config_objc" ]
514
515 deps = [
516 ":common_objc",
517 "../api:libjingle_peerconnection_api",
518 "../rtc_base:checks",
519 ]
520 }
521
kthelgason36d658d2017-08-24 05:43:45 -0700522 rtc_static_library("peerconnectionfactory_base_objc") {
zhihuanga4c113a2017-06-28 14:05:44 -0700523 sources = [
mbonadei2c8ac1b2017-05-31 05:14:26 -0700524 "objc/Framework/Classes/PeerConnection/RTCAudioSource+Private.h",
525 "objc/Framework/Classes/PeerConnection/RTCAudioSource.mm",
526 "objc/Framework/Classes/PeerConnection/RTCAudioTrack+Private.h",
527 "objc/Framework/Classes/PeerConnection/RTCAudioTrack.mm",
Zeke Chinef1140e2017-10-27 15:42:08 -0700528 "objc/Framework/Classes/PeerConnection/RTCConfiguration+Native.h",
mbonadei2c8ac1b2017-05-31 05:14:26 -0700529 "objc/Framework/Classes/PeerConnection/RTCConfiguration+Private.h",
530 "objc/Framework/Classes/PeerConnection/RTCConfiguration.mm",
531 "objc/Framework/Classes/PeerConnection/RTCDataChannel+Private.h",
532 "objc/Framework/Classes/PeerConnection/RTCDataChannel.mm",
533 "objc/Framework/Classes/PeerConnection/RTCDataChannelConfiguration+Private.h",
534 "objc/Framework/Classes/PeerConnection/RTCDataChannelConfiguration.mm",
Yura Yaroshevich27676322018-01-02 14:44:35 +0300535 "objc/Framework/Classes/PeerConnection/RTCDtmfSender+Private.h",
536 "objc/Framework/Classes/PeerConnection/RTCDtmfSender.mm",
mbonadei2c8ac1b2017-05-31 05:14:26 -0700537 "objc/Framework/Classes/PeerConnection/RTCIceCandidate+Private.h",
538 "objc/Framework/Classes/PeerConnection/RTCIceCandidate.mm",
539 "objc/Framework/Classes/PeerConnection/RTCIceServer+Private.h",
540 "objc/Framework/Classes/PeerConnection/RTCIceServer.mm",
Steve Antond295e402017-07-14 16:06:41 -0700541 "objc/Framework/Classes/PeerConnection/RTCIntervalRange+Private.h",
542 "objc/Framework/Classes/PeerConnection/RTCIntervalRange.mm",
mbonadei2c8ac1b2017-05-31 05:14:26 -0700543 "objc/Framework/Classes/PeerConnection/RTCLegacyStatsReport+Private.h",
544 "objc/Framework/Classes/PeerConnection/RTCLegacyStatsReport.mm",
mbonadei2c8ac1b2017-05-31 05:14:26 -0700545 "objc/Framework/Classes/PeerConnection/RTCMediaStream+Private.h",
546 "objc/Framework/Classes/PeerConnection/RTCMediaStream.mm",
547 "objc/Framework/Classes/PeerConnection/RTCMediaStreamTrack+Private.h",
548 "objc/Framework/Classes/PeerConnection/RTCMediaStreamTrack.mm",
549 "objc/Framework/Classes/PeerConnection/RTCMetrics.mm",
550 "objc/Framework/Classes/PeerConnection/RTCMetricsSampleInfo+Private.h",
551 "objc/Framework/Classes/PeerConnection/RTCMetricsSampleInfo.mm",
552 "objc/Framework/Classes/PeerConnection/RTCPeerConnection+DataChannel.mm",
Magnus Jedvert0af86d12017-10-28 16:26:55 +0200553 "objc/Framework/Classes/PeerConnection/RTCPeerConnection+Native.h",
mbonadei2c8ac1b2017-05-31 05:14:26 -0700554 "objc/Framework/Classes/PeerConnection/RTCPeerConnection+Private.h",
555 "objc/Framework/Classes/PeerConnection/RTCPeerConnection+Stats.mm",
556 "objc/Framework/Classes/PeerConnection/RTCPeerConnection.mm",
Kári Tristan Helgason99bf77c2018-02-16 10:49:22 +0100557 "objc/Framework/Classes/PeerConnection/RTCPeerConnectionFactory+Native.h",
558 "objc/Framework/Classes/PeerConnection/RTCPeerConnectionFactory+Private.h",
559 "objc/Framework/Classes/PeerConnection/RTCPeerConnectionFactory.mm",
Yura Yaroshevichbf567122018-01-02 13:33:16 +0300560 "objc/Framework/Classes/PeerConnection/RTCPeerConnectionFactoryOptions+Private.h",
561 "objc/Framework/Classes/PeerConnection/RTCPeerConnectionFactoryOptions.mm",
mbonadei2c8ac1b2017-05-31 05:14:26 -0700562 "objc/Framework/Classes/PeerConnection/RTCRtpCodecParameters+Private.h",
563 "objc/Framework/Classes/PeerConnection/RTCRtpCodecParameters.mm",
564 "objc/Framework/Classes/PeerConnection/RTCRtpEncodingParameters+Private.h",
565 "objc/Framework/Classes/PeerConnection/RTCRtpEncodingParameters.mm",
566 "objc/Framework/Classes/PeerConnection/RTCRtpParameters+Private.h",
567 "objc/Framework/Classes/PeerConnection/RTCRtpParameters.mm",
568 "objc/Framework/Classes/PeerConnection/RTCRtpReceiver+Private.h",
569 "objc/Framework/Classes/PeerConnection/RTCRtpReceiver.mm",
570 "objc/Framework/Classes/PeerConnection/RTCRtpSender+Private.h",
571 "objc/Framework/Classes/PeerConnection/RTCRtpSender.mm",
Steve Anton8cb344a2018-02-27 15:34:53 -0800572 "objc/Framework/Classes/PeerConnection/RTCRtpTransceiver+Private.h",
573 "objc/Framework/Classes/PeerConnection/RTCRtpTransceiver.mm",
mbonadei2c8ac1b2017-05-31 05:14:26 -0700574 "objc/Framework/Classes/PeerConnection/RTCSSLAdapter.mm",
575 "objc/Framework/Classes/PeerConnection/RTCSessionDescription+Private.h",
576 "objc/Framework/Classes/PeerConnection/RTCSessionDescription.mm",
577 "objc/Framework/Classes/PeerConnection/RTCTracing.mm",
mbonadei2c8ac1b2017-05-31 05:14:26 -0700578 "objc/Framework/Classes/PeerConnection/RTCVideoTrack+Private.h",
579 "objc/Framework/Classes/PeerConnection/RTCVideoTrack.mm",
Kári Tristan Helgasonf93f5a42017-05-31 10:04:55 +0200580 "objc/Framework/Headers/WebRTC/RTCAudioSource.h",
581 "objc/Framework/Headers/WebRTC/RTCAudioTrack.h",
kthelgason5fe4d492016-12-05 11:27:30 -0800582 "objc/Framework/Headers/WebRTC/RTCConfiguration.h",
583 "objc/Framework/Headers/WebRTC/RTCDataChannel.h",
584 "objc/Framework/Headers/WebRTC/RTCDataChannelConfiguration.h",
Yura Yaroshevich27676322018-01-02 14:44:35 +0300585 "objc/Framework/Headers/WebRTC/RTCDtmfSender.h",
kthelgason5fe4d492016-12-05 11:27:30 -0800586 "objc/Framework/Headers/WebRTC/RTCIceCandidate.h",
587 "objc/Framework/Headers/WebRTC/RTCIceServer.h",
Steve Antond295e402017-07-14 16:06:41 -0700588 "objc/Framework/Headers/WebRTC/RTCIntervalRange.h",
kthelgason5fe4d492016-12-05 11:27:30 -0800589 "objc/Framework/Headers/WebRTC/RTCLegacyStatsReport.h",
kthelgason5fe4d492016-12-05 11:27:30 -0800590 "objc/Framework/Headers/WebRTC/RTCMediaStream.h",
591 "objc/Framework/Headers/WebRTC/RTCMediaStreamTrack.h",
592 "objc/Framework/Headers/WebRTC/RTCMetrics.h",
593 "objc/Framework/Headers/WebRTC/RTCMetricsSampleInfo.h",
594 "objc/Framework/Headers/WebRTC/RTCPeerConnection.h",
595 "objc/Framework/Headers/WebRTC/RTCPeerConnectionFactory.h",
Yura Yaroshevichbf567122018-01-02 13:33:16 +0300596 "objc/Framework/Headers/WebRTC/RTCPeerConnectionFactoryOptions.h",
kthelgason5fe4d492016-12-05 11:27:30 -0800597 "objc/Framework/Headers/WebRTC/RTCRtpCodecParameters.h",
598 "objc/Framework/Headers/WebRTC/RTCRtpEncodingParameters.h",
599 "objc/Framework/Headers/WebRTC/RTCRtpParameters.h",
600 "objc/Framework/Headers/WebRTC/RTCRtpReceiver.h",
601 "objc/Framework/Headers/WebRTC/RTCRtpSender.h",
Steve Anton8cb344a2018-02-27 15:34:53 -0800602 "objc/Framework/Headers/WebRTC/RTCRtpTransceiver.h",
kthelgason5fe4d492016-12-05 11:27:30 -0800603 "objc/Framework/Headers/WebRTC/RTCSSLAdapter.h",
604 "objc/Framework/Headers/WebRTC/RTCSessionDescription.h",
605 "objc/Framework/Headers/WebRTC/RTCTracing.h",
kthelgason5fe4d492016-12-05 11:27:30 -0800606 "objc/Framework/Headers/WebRTC/RTCVideoTrack.h",
kthelgason5fe4d492016-12-05 11:27:30 -0800607 ]
kthelgasonebc34e72016-09-15 04:30:18 -0700608
kthelgasonc0977102017-04-24 00:57:16 -0700609 configs += [ "..:common_objc" ]
Kári Tristan Helgason99bf77c2018-02-16 10:49:22 +0100610 visibility = [ "*" ]
kthelgason36d658d2017-08-24 05:43:45 -0700611 public_configs = [ ":common_config_objc" ]
kthelgasonc0977102017-04-24 00:57:16 -0700612
kjellandere40a7ee2016-10-16 23:56:12 -0700613 if (!build_with_chromium && is_clang) {
zhihuanga4c113a2017-06-28 14:05:44 -0700614 # Suppress warnings from the Chromium Clang plugin
615 # (bugs.webrtc.org/163).
mbonadei2c8ac1b2017-05-31 05:14:26 -0700616 suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
617 }
618
619 deps = [
kthelgason36d658d2017-08-24 05:43:45 -0700620 ":common_objc",
Kári Tristan Helgason99bf77c2018-02-16 10:49:22 +0100621 ":mediaconstraints_objc",
Anders Carlsson9823ee42018-03-07 10:32:03 +0100622 ":mediasource_objc",
Anders Carlsson3ff50fb2018-02-01 15:47:05 +0100623 ":native_api",
624 ":native_video",
Kári Tristan Helgason99bf77c2018-02-16 10:49:22 +0100625 ":video_objc",
626 ":videocodec_objc",
627 ":videoframebuffer_objc",
Anders Carlsson9823ee42018-03-07 10:32:03 +0100628 ":videorenderer_objc",
629 ":videorendereradapter_objc",
630 ":videosource_objc",
Mirko Bonadeie51f7852017-12-06 11:23:19 +0100631 "../api:libjingle_peerconnection_api",
mbonadei2c8ac1b2017-05-31 05:14:26 -0700632 "../api:video_frame_api",
Anders Carlsson7e042812017-10-05 16:55:38 +0200633 "../api/video_codecs:video_codecs_api",
Anders Carlssone5960ce2017-06-22 15:26:30 +0200634 "../common_video",
mbonadei2c8ac1b2017-05-31 05:14:26 -0700635 "../media:rtc_media_base",
kthelgasonfb143122017-07-25 07:55:58 -0700636 "../modules:module_api",
Patrik Höglund99175c62018-01-08 11:05:10 +0100637 "../modules/video_coding:video_codec_interface",
Kári Tristan Helgason99bf77c2018-02-16 10:49:22 +0100638 "../pc:create_pc_factory",
zhihuanga4c113a2017-06-28 14:05:44 -0700639 "../pc:peerconnection",
Patrik Höglunda8005cf2017-12-13 16:05:42 +0100640 "../rtc_base:checks",
ehmaldonadof6a861a2017-07-19 10:40:47 -0700641 "../rtc_base:rtc_base",
mbonadei2c8ac1b2017-05-31 05:14:26 -0700642 ]
kthelgasonebc34e72016-09-15 04:30:18 -0700643 }
Zeke Chindd0e1e02016-10-11 13:27:26 -0700644
mbonadei2c8ac1b2017-05-31 05:14:26 -0700645 if (rtc_include_tests) {
Daniela012b56b2017-11-15 13:15:24 +0100646 if (is_ios) {
Danielaae012cf2017-10-12 13:46:00 +0200647 rtc_source_set("sdk_unittests_sources") {
648 testonly = true
649 include_dirs = [
650 "objc/Framework/Headers",
651 "objc/Framework/Classes",
652 ]
Daniela012b56b2017-11-15 13:15:24 +0100653
Danielaae012cf2017-10-12 13:46:00 +0200654 sources = [
Anders Carlsson3b3364e2018-01-30 15:46:13 +0100655 "objc/Framework/UnitTests/RTCCallbackLogger_xctest.m",
Peter Hanspers8020ae82018-01-09 14:26:41 +0100656 "objc/Framework/UnitTests/RTCDoNotPutCPlusPlusInFrameworkHeaders_xctest.m",
Daniela012b56b2017-11-15 13:15:24 +0100657 "objc/Framework/UnitTests/RTCFileVideoCapturer_xctest.mm",
Danielaae012cf2017-10-12 13:46:00 +0200658 ]
Daniela012b56b2017-11-15 13:15:24 +0100659
Danielaae012cf2017-10-12 13:46:00 +0200660 deps = [
661 ":common_objc",
Anders Carlssondc6b4772018-01-15 13:31:03 +0100662 ":framework_objc",
Kári Tristan Helgason99bf77c2018-02-16 10:49:22 +0100663 ":videocapture_objc",
Anders Carlsson9823ee42018-03-07 10:32:03 +0100664 ":videosource_objc",
Danielaae012cf2017-10-12 13:46:00 +0200665 ":videotoolbox_objc",
Mirko Bonadeia498ae82017-12-06 09:17:14 +0100666 "../../system_wrappers:system_wrappers_default",
Danielaae012cf2017-10-12 13:46:00 +0200667 "../media:rtc_media_base",
668 "../modules:module_api",
669 "../rtc_base:rtc_base",
670 "../rtc_base:rtc_base_tests_utils",
Danielaae012cf2017-10-12 13:46:00 +0200671 ]
Kári Tristan Helgason99bf77c2018-02-16 10:49:22 +0100672
673 if (rtc_use_metal_rendering) {
674 sources += [ "objc/Framework/UnitTests/RTCMTLVideoView_xctest.mm" ]
675 deps += [ ":metal_objc" ]
676 }
677
Danielaae012cf2017-10-12 13:46:00 +0200678 public_deps = [
679 "//build/config/ios:xctest",
680 "//third_party/ocmock",
681 ]
Kári Tristan Helgason99bf77c2018-02-16 10:49:22 +0100682
Anders Carlssondc6b4772018-01-15 13:31:03 +0100683 include_dirs += [ "$root_out_dir/WebRTC.framework/Headers/" ]
Danielaae012cf2017-10-12 13:46:00 +0200684 }
685
Daniela012b56b2017-11-15 13:15:24 +0100686 bundle_data("sdk_unittests_bundle_data") {
687 # Sample video taken from https://media.xiph.org/video/derf/
688 sources = [
689 "objc/Framework/UnitTests/foreman.mp4",
690 ]
691 outputs = [
692 "{{bundle_resources_dir}}/{{source_file_part}}",
693 ]
694 }
695
Danielaae012cf2017-10-12 13:46:00 +0200696 rtc_ios_xctest_test("sdk_unittests") {
697 info_plist = "//test/ios/Info.plist"
698 sources = [
699 "objc/Framework/UnitTests/main.m",
700 ]
Daniela012b56b2017-11-15 13:15:24 +0100701
Danielaae012cf2017-10-12 13:46:00 +0200702 _bundle_id_suffix = ios_generic_test_bundle_id_suffix
703 extra_substitutions = [ "GTEST_BUNDLE_ID_SUFFIX=$_bundle_id_suffix" ]
704 deps = [
Daniela012b56b2017-11-15 13:15:24 +0100705 ":sdk_unittests_bundle_data",
Danielaae012cf2017-10-12 13:46:00 +0200706 ":sdk_unittests_sources",
707 ]
708 ldflags = [ "-all_load" ]
709 }
710 }
711
712 # TODO(denicija): once all tests are migrated to xctest remove this source set.
kthelgason36d658d2017-08-24 05:43:45 -0700713 rtc_source_set("sdk_unittests_objc") {
mbonadei2c8ac1b2017-05-31 05:14:26 -0700714 testonly = true
Kári Tristan Helgasoncbe74352016-11-09 10:43:26 +0100715
mbonadei2c8ac1b2017-05-31 05:14:26 -0700716 sources = [
mbonadei2c8ac1b2017-05-31 05:14:26 -0700717 "objc/Framework/UnitTests/RTCConfigurationTest.mm",
718 "objc/Framework/UnitTests/RTCDataChannelConfigurationTest.mm",
719 "objc/Framework/UnitTests/RTCIceCandidateTest.mm",
720 "objc/Framework/UnitTests/RTCIceServerTest.mm",
Steve Antond295e402017-07-14 16:06:41 -0700721 "objc/Framework/UnitTests/RTCIntervalRangeTests.mm",
mbonadei2c8ac1b2017-05-31 05:14:26 -0700722 "objc/Framework/UnitTests/RTCMediaConstraintsTest.mm",
723 "objc/Framework/UnitTests/RTCPeerConnectionTest.mm",
724 "objc/Framework/UnitTests/RTCSessionDescriptionTest.mm",
jtteh7480da42017-07-07 11:02:15 -0700725 "objc/Framework/UnitTests/RTCTracingTest.mm",
kthelgasonfb143122017-07-25 07:55:58 -0700726 "objc/Framework/UnitTests/objc_video_decoder_factory_tests.mm",
727 "objc/Framework/UnitTests/objc_video_encoder_factory_tests.mm",
Kári Tristan Helgasonca957482017-10-05 14:06:52 +0200728 "objc/Framework/UnitTests/scoped_cftyperef_tests.mm",
mbonadei2c8ac1b2017-05-31 05:14:26 -0700729 ]
Anders Carlssone7dd83f2018-01-19 11:28:44 +0100730 if (is_ios) {
oprypin45197522017-06-22 01:47:20 -0700731 sources +=
732 [ "objc/Framework/UnitTests/RTCCameraVideoCapturerTests.mm" ]
733 }
mbonadeid7620582017-05-30 01:50:35 -0700734
mbonadei2c8ac1b2017-05-31 05:14:26 -0700735 # |-ObjC| flag needed to make sure category method implementations
736 # are included:
737 # https://developer.apple.com/library/mac/qa/qa1490/_index.html
738 ldflags = [ "-ObjC" ]
magjed3149e092017-05-08 05:32:05 -0700739
mbonadei2c8ac1b2017-05-31 05:14:26 -0700740 defines = [ "GTEST_RELATIVE_PATH" ]
741 deps = [
Kári Tristan Helgasonca957482017-10-05 14:06:52 +0200742 ":common_objc",
Kári Tristan Helgason99bf77c2018-02-16 10:49:22 +0100743 ":mediaconstraints_objc",
744 ":native_api",
Anders Carlsson3ff50fb2018-02-01 15:47:05 +0100745 ":native_video",
Kári Tristan Helgason99bf77c2018-02-16 10:49:22 +0100746 ":peerconnectionfactory_base_objc",
747 ":video_objc",
748 ":videocapture_objc",
749 ":videocodec_objc",
750 ":videoframebuffer_objc",
Anders Carlsson9823ee42018-03-07 10:32:03 +0100751 ":videosource_objc",
kthelgason36d658d2017-08-24 05:43:45 -0700752 ":videotoolbox_objc",
Mirko Bonadeia498ae82017-12-06 09:17:14 +0100753 "../../system_wrappers:system_wrappers_default",
kthelgasonebd4f792017-09-04 04:36:21 -0700754 "../media:rtc_media_base",
kthelgasonfb143122017-07-25 07:55:58 -0700755 "../modules:module_api",
Patrik Höglund99175c62018-01-08 11:05:10 +0100756 "../modules/video_coding:video_codec_interface",
ehmaldonadof6a861a2017-07-19 10:40:47 -0700757 "../rtc_base:rtc_base_tests_utils",
Kári Tristan Helgasonca957482017-10-05 14:06:52 +0200758 "//test:test_support",
mbonadei2c8ac1b2017-05-31 05:14:26 -0700759 "//third_party/ocmock",
760 ]
magjed3149e092017-05-08 05:32:05 -0700761
denicija59ee91b2017-06-05 05:48:47 -0700762 if (is_ios) {
763 sources += [ "objc/Framework/UnitTests/RTCAudioSessionTest.mm" ]
Kári Tristan Helgason99bf77c2018-02-16 10:49:22 +0100764 deps += [ ":audio_objc" ]
mbonadei2c8ac1b2017-05-31 05:14:26 -0700765 }
Danielaae012cf2017-10-12 13:46:00 +0200766
mbonadei2c8ac1b2017-05-31 05:14:26 -0700767 if (!build_with_chromium && is_clang) {
zhihuanga4c113a2017-06-28 14:05:44 -0700768 # Suppress warnings from the Chromium Clang plugin
769 # (bugs.webrtc.org/163).
mbonadei2c8ac1b2017-05-31 05:14:26 -0700770 suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
771 }
772 }
kthelgason2f088792017-05-30 01:48:47 -0700773 }
774
mbonadei2c8ac1b2017-05-31 05:14:26 -0700775 if (is_ios) {
Anders Carlssondc6b4772018-01-15 13:31:03 +0100776 ios_framework_bundle_with_umbrella_header("framework_objc") {
mbonadei2c8ac1b2017-05-31 05:14:26 -0700777 info_plist = "objc/Framework/Info.plist"
778 output_name = "WebRTC"
Magnus Jedvertf83dc8b2017-08-29 09:49:43 +0000779
mbonadei2c8ac1b2017-05-31 05:14:26 -0700780 common_objc_headers = [
Jeremy Newton-Smith96de4282017-08-23 10:02:23 -0700781 "objc/Framework/Headers/WebRTC/RTCAudioSession.h",
Magnus Jedvertf83dc8b2017-08-29 09:49:43 +0000782 "objc/Framework/Headers/WebRTC/RTCVideoCodec.h",
783 "objc/Framework/Headers/WebRTC/RTCVideoCodecFactory.h",
Jeremy Newton-Smith96de4282017-08-23 10:02:23 -0700784 "objc/Framework/Headers/WebRTC/RTCAudioSessionConfiguration.h",
mbonadei2c8ac1b2017-05-31 05:14:26 -0700785 "objc/Framework/Headers/WebRTC/RTCAudioSource.h",
786 "objc/Framework/Headers/WebRTC/RTCAudioTrack.h",
787 "objc/Framework/Headers/WebRTC/RTCCameraVideoCapturer.h",
788 "objc/Framework/Headers/WebRTC/RTCCameraPreviewView.h",
789 "objc/Framework/Headers/WebRTC/RTCConfiguration.h",
790 "objc/Framework/Headers/WebRTC/RTCDataChannel.h",
791 "objc/Framework/Headers/WebRTC/RTCDataChannelConfiguration.h",
792 "objc/Framework/Headers/WebRTC/RTCDispatcher.h",
793 "objc/Framework/Headers/WebRTC/RTCEAGLVideoView.h",
794 "objc/Framework/Headers/WebRTC/RTCFieldTrials.h",
Daniela012b56b2017-11-15 13:15:24 +0100795 "objc/Framework/Headers/WebRTC/RTCFileVideoCapturer.h",
mbonadei2c8ac1b2017-05-31 05:14:26 -0700796 "objc/Framework/Headers/WebRTC/RTCIceCandidate.h",
797 "objc/Framework/Headers/WebRTC/RTCIceServer.h",
Steve Antond295e402017-07-14 16:06:41 -0700798 "objc/Framework/Headers/WebRTC/RTCIntervalRange.h",
mbonadei2c8ac1b2017-05-31 05:14:26 -0700799 "objc/Framework/Headers/WebRTC/RTCLegacyStatsReport.h",
800 "objc/Framework/Headers/WebRTC/RTCLogging.h",
801 "objc/Framework/Headers/WebRTC/RTCMacros.h",
802 "objc/Framework/Headers/WebRTC/RTCMediaConstraints.h",
803 "objc/Framework/Headers/WebRTC/RTCMediaSource.h",
804 "objc/Framework/Headers/WebRTC/RTCMediaStream.h",
805 "objc/Framework/Headers/WebRTC/RTCMediaStreamTrack.h",
806 "objc/Framework/Headers/WebRTC/RTCMetrics.h",
807 "objc/Framework/Headers/WebRTC/RTCMetricsSampleInfo.h",
808 "objc/Framework/Headers/WebRTC/RTCPeerConnection.h",
809 "objc/Framework/Headers/WebRTC/RTCPeerConnectionFactory.h",
Yura Yaroshevichbf567122018-01-02 13:33:16 +0300810 "objc/Framework/Headers/WebRTC/RTCPeerConnectionFactoryOptions.h",
mbonadei2c8ac1b2017-05-31 05:14:26 -0700811 "objc/Framework/Headers/WebRTC/RTCRtpCodecParameters.h",
812 "objc/Framework/Headers/WebRTC/RTCRtpEncodingParameters.h",
813 "objc/Framework/Headers/WebRTC/RTCRtpParameters.h",
814 "objc/Framework/Headers/WebRTC/RTCRtpReceiver.h",
815 "objc/Framework/Headers/WebRTC/RTCRtpSender.h",
Steve Anton8cb344a2018-02-27 15:34:53 -0800816 "objc/Framework/Headers/WebRTC/RTCRtpTransceiver.h",
Yura Yaroshevich27676322018-01-02 14:44:35 +0300817 "objc/Framework/Headers/WebRTC/RTCDtmfSender.h",
mbonadei2c8ac1b2017-05-31 05:14:26 -0700818 "objc/Framework/Headers/WebRTC/RTCSSLAdapter.h",
819 "objc/Framework/Headers/WebRTC/RTCSessionDescription.h",
820 "objc/Framework/Headers/WebRTC/RTCTracing.h",
821 "objc/Framework/Headers/WebRTC/RTCVideoCapturer.h",
Anders Carlsson7e042812017-10-05 16:55:38 +0200822 "objc/Framework/Headers/WebRTC/RTCVideoCodecH264.h",
mbonadei2c8ac1b2017-05-31 05:14:26 -0700823 "objc/Framework/Headers/WebRTC/RTCVideoFrame.h",
Anders Carlssone5960ce2017-06-22 15:26:30 +0200824 "objc/Framework/Headers/WebRTC/RTCVideoFrameBuffer.h",
mbonadei2c8ac1b2017-05-31 05:14:26 -0700825 "objc/Framework/Headers/WebRTC/RTCVideoRenderer.h",
826 "objc/Framework/Headers/WebRTC/RTCVideoSource.h",
827 "objc/Framework/Headers/WebRTC/RTCVideoTrack.h",
828 "objc/Framework/Headers/WebRTC/RTCVideoViewShading.h",
829 "objc/Framework/Headers/WebRTC/UIDevice+RTCDevice.h",
mbonadei2c8ac1b2017-05-31 05:14:26 -0700830 ]
Anders Carlssondd8c1652018-01-30 10:32:13 +0100831 if (rtc_use_builtin_sw_codecs) {
832 common_objc_headers += [
833 "objc/Framework/Headers/WebRTC/RTCVideoDecoderVP8.h",
834 "objc/Framework/Headers/WebRTC/RTCVideoDecoderVP9.h",
835 "objc/Framework/Headers/WebRTC/RTCVideoEncoderVP8.h",
836 "objc/Framework/Headers/WebRTC/RTCVideoEncoderVP9.h",
837 ]
838 }
mbonadei2c8ac1b2017-05-31 05:14:26 -0700839 if (!build_with_chromium) {
Kári Tristan Helgason99bf77c2018-02-16 10:49:22 +0100840 common_objc_headers += [
Anders Carlsson3b3364e2018-01-30 15:46:13 +0100841 "objc/Framework/Headers/WebRTC/RTCCallbackLogger.h",
842 "objc/Framework/Headers/WebRTC/RTCFileLogger.h",
843 ]
mbonadei2c8ac1b2017-05-31 05:14:26 -0700844 }
Kári Tristan Helgasoncbe74352016-11-09 10:43:26 +0100845
Kári Tristan Helgason99bf77c2018-02-16 10:49:22 +0100846 sources = common_objc_headers
847 public_headers = common_objc_headers
848
mbonadei2c8ac1b2017-05-31 05:14:26 -0700849 ldflags = [
850 "-all_load",
851 "-install_name",
852 "@rpath/$output_name.framework/$output_name",
853 ]
Kári Tristan Helgasoncbe74352016-11-09 10:43:26 +0100854
mbonadei2c8ac1b2017-05-31 05:14:26 -0700855 deps = [
kthelgason36d658d2017-08-24 05:43:45 -0700856 ":audio_objc",
Kári Tristan Helgason99bf77c2018-02-16 10:49:22 +0100857 ":common_objc",
858 ":default_codec_factory_objc",
859 ":native_api",
860 ":native_video",
861 ":peerconnectionfactory_base_objc",
kthelgason36d658d2017-08-24 05:43:45 -0700862 ":ui_objc",
Kári Tristan Helgason99bf77c2018-02-16 10:49:22 +0100863 ":videocapture_objc",
864 ":videocodec_objc",
865 ":videotoolbox_objc",
ehmaldonadof6a861a2017-07-19 10:40:47 -0700866 "../rtc_base:rtc_base_approved",
mbonadei2c8ac1b2017-05-31 05:14:26 -0700867 "../system_wrappers:field_trial_default",
868 "../system_wrappers:metrics_default",
Ilya Nikolaevskiy2ffe3e82018-01-17 19:57:24 +0000869 "../system_wrappers:runtime_enabled_features_default",
mbonadei2c8ac1b2017-05-31 05:14:26 -0700870 ]
Kári Tristan Helgason99bf77c2018-02-16 10:49:22 +0100871 if (rtc_use_metal_rendering) {
872 common_objc_headers +=
873 [ "objc/Framework/Headers/WebRTC/RTCMTLVideoView.h" ]
874 deps += [ ":metal_objc" ]
875 }
Kári Tristan Helgasoncbe74352016-11-09 10:43:26 +0100876
mbonadei2c8ac1b2017-05-31 05:14:26 -0700877 libs = [
878 "AVFoundation.framework",
879 "CoreGraphics.framework",
880 "CoreMedia.framework",
881 "GLKit.framework",
882 ]
883
884 configs += [ "..:common_objc" ]
885
kthelgason36d658d2017-08-24 05:43:45 -0700886 public_configs = [ ":common_config_objc" ]
mbonadei2c8ac1b2017-05-31 05:14:26 -0700887
888 if (!build_with_chromium && is_clang) {
zhihuanga4c113a2017-06-28 14:05:44 -0700889 # Suppress warnings from the Chromium Clang plugin
890 # (bugs.webrtc.org/163).
mbonadei2c8ac1b2017-05-31 05:14:26 -0700891 configs -= [ "//build/config/clang:find_bad_constructs" ]
892 }
893 }
Kári Tristan Helgasoncbe74352016-11-09 10:43:26 +0100894 }
895
Anders Carlsson9823ee42018-03-07 10:32:03 +0100896 rtc_static_library("wrapped_native_codec_objc") {
897 sources = [
898 "objc/Framework/Classes/PeerConnection/RTCWrappedNativeVideoDecoder.h",
899 "objc/Framework/Classes/PeerConnection/RTCWrappedNativeVideoDecoder.mm",
900 "objc/Framework/Classes/PeerConnection/RTCWrappedNativeVideoEncoder.h",
901 "objc/Framework/Classes/PeerConnection/RTCWrappedNativeVideoEncoder.mm",
902 ]
903
904 configs += [ "..:common_objc" ]
905 public_configs = [ ":common_config_objc" ]
906
907 if (!build_with_chromium && is_clang) {
908 # Suppress warnings from the Chromium Clang plugin
909 # (bugs.webrtc.org/163).
910 suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
911 }
912
913 deps = [
914 ":common_objc",
915 ":videocodec_objc",
916 "../api/video_codecs:video_codecs_api",
917 "../media:rtc_media_base",
918 ]
919 }
920
Anders Carlsson3ff50fb2018-02-01 15:47:05 +0100921 # The native API is currently experimental and may change without notice.
922 rtc_static_library("native_api") {
923 visibility = [ "*" ]
924 sources = [
925 "objc/Framework/Native/api/video_decoder_factory.h",
926 "objc/Framework/Native/api/video_decoder_factory.mm",
927 "objc/Framework/Native/api/video_encoder_factory.h",
928 "objc/Framework/Native/api/video_encoder_factory.mm",
Anders Carlsson9823ee42018-03-07 10:32:03 +0100929 "objc/Framework/Native/api/video_frame.h",
930 "objc/Framework/Native/api/video_frame.mm",
931 "objc/Framework/Native/api/video_frame_buffer.h",
932 "objc/Framework/Native/api/video_frame_buffer.mm",
933 "objc/Framework/Native/api/video_renderer.h",
934 "objc/Framework/Native/api/video_renderer.mm",
Anders Carlsson3ff50fb2018-02-01 15:47:05 +0100935 ]
936
937 configs += [ "..:common_objc" ]
938
939 public_configs = [ ":common_config_objc" ]
940
941 if (!build_with_chromium && is_clang) {
942 # Suppress warnings from the Chromium Clang plugin
943 # (bugs.webrtc.org/163).
944 suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
945 }
946
947 deps = [
948 ":native_video",
Kári Tristan Helgason99bf77c2018-02-16 10:49:22 +0100949 ":videocodec_objc",
950 ":videoframebuffer_objc",
Anders Carlsson9823ee42018-03-07 10:32:03 +0100951 ":videorenderer_objc",
952 "../api:video_frame_api",
Anders Carlsson3ff50fb2018-02-01 15:47:05 +0100953 "../api/video_codecs:video_codecs_api",
954 "../common_video",
955 "../rtc_base:rtc_base",
956 ]
957 }
958
959 rtc_static_library("native_video") {
960 sources = [
Anders Carlsson9823ee42018-03-07 10:32:03 +0100961 "objc/Framework/Native/src/objc_frame_buffer.h",
962 "objc/Framework/Native/src/objc_frame_buffer.mm",
Anders Carlsson3ff50fb2018-02-01 15:47:05 +0100963 "objc/Framework/Native/src/objc_video_decoder_factory.h",
964 "objc/Framework/Native/src/objc_video_decoder_factory.mm",
965 "objc/Framework/Native/src/objc_video_encoder_factory.h",
966 "objc/Framework/Native/src/objc_video_encoder_factory.mm",
Anders Carlsson9823ee42018-03-07 10:32:03 +0100967 "objc/Framework/Native/src/objc_video_frame.h",
968 "objc/Framework/Native/src/objc_video_frame.mm",
969 "objc/Framework/Native/src/objc_video_renderer.h",
970 "objc/Framework/Native/src/objc_video_renderer.mm",
971 "objc/Framework/Native/src/objc_video_track_source.h",
972 "objc/Framework/Native/src/objc_video_track_source.mm",
Anders Carlsson3ff50fb2018-02-01 15:47:05 +0100973 ]
974
975 configs += [ "..:common_objc" ]
976
977 public_configs = [ ":common_config_objc" ]
978
979 if (!build_with_chromium && is_clang) {
980 # Suppress warnings from the Chromium Clang plugin
981 # (bugs.webrtc.org/163).
982 suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
983 }
984
985 deps = [
986 ":common_objc",
Kári Tristan Helgason99bf77c2018-02-16 10:49:22 +0100987 ":videocodec_objc",
988 ":videoframebuffer_objc",
Anders Carlsson9823ee42018-03-07 10:32:03 +0100989 ":videorenderer_objc",
990 ":wrapped_native_codec_objc",
Anders Carlsson3ff50fb2018-02-01 15:47:05 +0100991 "../api:video_frame_api",
Anders Carlsson9823ee42018-03-07 10:32:03 +0100992 "../api:video_frame_api_i420",
Anders Carlsson3ff50fb2018-02-01 15:47:05 +0100993 "../api/video_codecs:video_codecs_api",
994 "../common_video",
995 "../media:rtc_audio_video",
996 "../media:rtc_media_base",
997 "../modules:module_api",
998 "../modules/video_coding:video_codec_interface",
999 "../rtc_base:checks",
1000 "../rtc_base:rtc_base",
1001 ]
1002 }
1003
mbonadeic0af5ac2017-08-24 12:26:05 -07001004 rtc_static_library("video_toolbox_cc") {
mbonadei6ff8f962017-09-04 05:51:34 -07001005 visibility = [ ":videotoolbox_objc" ]
mbonadei2c8ac1b2017-05-31 05:14:26 -07001006 sources = [
magjed73c0eb52017-08-07 06:55:28 -07001007 "objc/Framework/Classes/VideoToolbox/helpers.cc",
1008 "objc/Framework/Classes/VideoToolbox/helpers.h",
mbonadei2c8ac1b2017-05-31 05:14:26 -07001009 "objc/Framework/Classes/VideoToolbox/nalu_rewriter.cc",
1010 "objc/Framework/Classes/VideoToolbox/nalu_rewriter.h",
mbonadeic0af5ac2017-08-24 12:26:05 -07001011 ]
1012 deps = [
1013 "../common_video",
1014 "../modules:module_api",
1015 "../modules/video_coding:webrtc_h264",
Patrik Höglunda8005cf2017-12-13 16:05:42 +01001016 "../rtc_base:checks",
mbonadeic0af5ac2017-08-24 12:26:05 -07001017 "../rtc_base:rtc_base_approved",
1018 ]
1019 if (!build_with_chromium && is_clang) {
1020 # Suppress warnings from the Chromium Clang plugin
1021 # (bugs.webrtc.org/163).
1022 suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
1023 }
1024 }
1025
1026 rtc_static_library("videotoolbox_objc") {
Kári Tristan Helgason99bf77c2018-02-16 10:49:22 +01001027 visibility = [ "*" ]
mbonadeic0af5ac2017-08-24 12:26:05 -07001028 sources = [
1029 "objc/Framework/Classes/VideoToolbox/RTCVideoDecoderH264.mm",
1030 "objc/Framework/Classes/VideoToolbox/RTCVideoEncoderH264.mm",
mbonadei2c8ac1b2017-05-31 05:14:26 -07001031 ]
1032
1033 configs += [ "..:common_objc" ]
1034
1035 deps = [
kthelgason36d658d2017-08-24 05:43:45 -07001036 ":common_objc",
Anders Carlsson3ff50fb2018-02-01 15:47:05 +01001037 ":native_api",
kthelgason36d658d2017-08-24 05:43:45 -07001038 ":video_objc",
mbonadeic0af5ac2017-08-24 12:26:05 -07001039 ":video_toolbox_cc",
Kári Tristan Helgason99bf77c2018-02-16 10:49:22 +01001040 ":videocodec_objc",
1041 ":videoframebuffer_objc",
Anders Carlsson9823ee42018-03-07 10:32:03 +01001042 ":videosource_objc",
Mirko Bonadei0594a7c2017-12-18 11:42:48 +01001043 "../api:video_frame_api",
kthelgasonfb143122017-07-25 07:55:58 -07001044 "../api/video_codecs:video_codecs_api",
mbonadei2c8ac1b2017-05-31 05:14:26 -07001045 "../common_video",
Mirko Bonadei75baa492018-01-11 17:07:30 +01001046 "../media:rtc_audio_video",
mbonadei2c8ac1b2017-05-31 05:14:26 -07001047 "../media:rtc_media",
1048 "../media:rtc_media_base",
1049 "../modules:module_api",
Patrik Höglund99175c62018-01-08 11:05:10 +01001050 "../modules/video_coding:video_codec_interface",
mbonadei2c8ac1b2017-05-31 05:14:26 -07001051 "../modules/video_coding:video_coding_utility",
Patrik Höglunda8005cf2017-12-13 16:05:42 +01001052 "../rtc_base:checks",
ehmaldonadof6a861a2017-07-19 10:40:47 -07001053 "../rtc_base:rtc_base_approved",
mbonadei2c8ac1b2017-05-31 05:14:26 -07001054 "../system_wrappers",
Mirko Bonadei401d0562017-12-14 11:24:00 +01001055 "//third_party/libyuv",
mbonadei2c8ac1b2017-05-31 05:14:26 -07001056 ]
1057
1058 libs = [
1059 "CoreFoundation.framework",
1060 "CoreMedia.framework",
1061 "CoreVideo.framework",
1062 "VideoToolbox.framework",
1063 ]
1064
1065 if (!build_with_chromium && is_clang) {
zhihuanga4c113a2017-06-28 14:05:44 -07001066 # Suppress warnings from the Chromium Clang plugin
1067 # (bugs.webrtc.org/163).
mbonadei2c8ac1b2017-05-31 05:14:26 -07001068 suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
1069 }
Kári Tristan Helgasoncbe74352016-11-09 10:43:26 +01001070 }
1071 }
tkchin9eeb6242016-04-27 01:54:20 -07001072}