Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(87)

Side by Side Diff: webrtc/pc/BUILD.gn

Issue 2854123003: Build WebRTC with data channel only. (Closed)
Patch Set: Try the internal trybots. Created 3 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 # Copyright (c) 2016 The WebRTC project authors. All Rights Reserved. 1 # Copyright (c) 2016 The WebRTC project authors. All Rights Reserved.
2 # 2 #
3 # Use of this source code is governed by a BSD-style license 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 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 5 # tree. An additional intellectual property rights grant can be found
6 # in the file PATENTS. All contributing project authors may 6 # in the file PATENTS. All contributing project authors may
7 # be found in the AUTHORS file in the root of the source tree. 7 # be found in the AUTHORS file in the root of the source tree.
8 8
9 import("../webrtc.gni") 9 import("../webrtc.gni")
10 if (is_android) { 10 if (is_android) {
11 import("//build/config/android/config.gni") 11 import("//build/config/android/config.gni")
12 import("//build/config/android/rules.gni") 12 import("//build/config/android/rules.gni")
13 } 13 }
14 14
15 group("pc") { 15 group("pc") {
16 public_deps = [ 16 public_deps = [
17 ":rtc_pc", 17 ":rtc_pc",
18 ] 18 ]
19 } 19 }
20 20
21 config("rtc_pc_config") { 21 config("rtc_pc_config") {
22 defines = [] 22 defines = []
23 if (rtc_enable_sctp) { 23 if (rtc_enable_sctp) {
24 defines += [ "HAVE_SCTP" ] 24 defines += [ "HAVE_SCTP" ]
25 } 25 }
26 } 26 }
27 27
28 rtc_static_library("rtc_pc") { 28 rtc_static_library("rtc_pc_base") {
29 defines = [] 29 defines = []
30 sources = [ 30 sources = [
31 "audiomonitor.cc", 31 "audiomonitor.cc",
32 "audiomonitor.h", 32 "audiomonitor.h",
33 "bundlefilter.cc", 33 "bundlefilter.cc",
34 "bundlefilter.h", 34 "bundlefilter.h",
35 "channel.cc", 35 "channel.cc",
36 "channel.h", 36 "channel.h",
37 "channelmanager.cc", 37 "channelmanager.cc",
38 "channelmanager.h", 38 "channelmanager.h",
(...skipping 13 matching lines...) Expand all
52 "srtpfilter.h", 52 "srtpfilter.h",
53 "voicechannel.h", 53 "voicechannel.h",
54 ] 54 ]
55 55
56 deps = [ 56 deps = [
57 "..:webrtc_common", 57 "..:webrtc_common",
58 "../api:call_api", 58 "../api:call_api",
59 "../api:libjingle_peerconnection_api", 59 "../api:libjingle_peerconnection_api",
60 "../api:ortc_api", 60 "../api:ortc_api",
61 "../base:rtc_base", 61 "../base:rtc_base",
62 "../common_video:common_video", 62 "../base:rtc_task_queue",
63 "../media", 63 "../media:rtc_data",
64 "../media:rtc_media_base_data",
64 "../p2p:rtc_p2p", 65 "../p2p:rtc_p2p",
65 ] 66 ]
66 67
67 if (rtc_build_libsrtp) { 68 if (rtc_build_libsrtp) {
68 deps += [ "//third_party/libsrtp" ] 69 deps += [ "//third_party/libsrtp" ]
69 } 70 }
70 71
71 public_configs = [ ":rtc_pc_config" ] 72 public_configs = [ ":rtc_pc_config" ]
72 73
73 if (!build_with_chromium && is_clang) { 74 if (!build_with_chromium && is_clang) {
74 # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163). 75 # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
75 suppressed_configs += [ "//build/config/clang:find_bad_constructs" ] 76 suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
76 } 77 }
77 } 78 }
78 79
80 # TODO(zhihuang): Remove this once the downstream dependencies start using the
81 # modular targets.
82 rtc_source_set("rtc_pc") {
83 public_deps = [
84 ":rtc_pc_base",
85 ]
86
87 deps = [
88 "../media:rtc_audio_video",
89 ]
90 }
91
79 config("libjingle_peerconnection_warnings_config") { 92 config("libjingle_peerconnection_warnings_config") {
80 # GN orders flags on a target before flags from configs. The default config 93 # GN orders flags on a target before flags from configs. The default config
81 # adds these flags so to cancel them out they need to come from a config and 94 # adds these flags so to cancel them out they need to come from a config and
82 # cannot be on the target directly. 95 # cannot be on the target directly.
83 if (!is_win && !is_clang) { 96 if (!is_win && !is_clang) {
84 cflags = [ "-Wno-maybe-uninitialized" ] # Only exists for GCC. 97 cflags = [ "-Wno-maybe-uninitialized" ] # Only exists for GCC.
85 } 98 }
86 } 99 }
87 100
88 rtc_static_library("libjingle_peerconnection") { 101 # This target contains the null implementation of the audio module and it is
102 # used to build WebRTC without audio support.
103 rtc_static_library("pc_null_audio") {
the sun 2017/06/05 14:27:15 This is much better, but there's still a little to
Zhi Huang 2017/06/06 03:09:51 Sorry that I didn't understand your previous sugge
the sun 2017/06/06 19:30:33 The point I'd like us to get to is to *not* mainta
104 sources = [
105 "nullaudiofactory.cc",
106 ]
107
108 if (!build_with_chromium && is_clang) {
109 # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
110 suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
111 }
112
113 deps = [
114 "../api:libjingle_peerconnection_api",
115 "../base:rtc_base",
116 "../base:rtc_base_approved",
117 ]
118 }
119
120 # This target contains the real implementation of the audio module and it is
121 # used to build WebRTC with audio support. It should never be used with
122 # "pc_null_audio" at the same time and it should always be linked with the
123 # "pc_media".
124 rtc_static_library("pc_audio") {
125 sources = [
126 "audiofactory.cc",
127 ]
128
129 deps = [
130 "../api:audio_mixer_api",
131 "../api:libjingle_peerconnection_api",
132 "../api/audio_codecs:audio_codecs_api",
133 "../api/audio_codecs:builtin_audio_decoder_factory",
134 "../api/audio_codecs:builtin_audio_encoder_factory",
135 "../base:rtc_base",
136 "../base:rtc_base_approved",
137 "../media:rtc_audio_video",
138 "../modules/audio_device:audio_device",
139 ]
140
141 if (!build_with_chromium && is_clang) {
142 # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
143 suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
144 }
145 }
146
147 # This target contains the null implementation of the audio/video related
148 # objects and it is used to build WebRTC without audio and video support.
149 rtc_source_set("pc_null_media") {
150 sources = [
151 "nullmediafactory.cc",
152 ]
153
154 if (!build_with_chromium && is_clang) {
155 # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
156 suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
157 }
158
159 deps = [
160 "../logging:rtc_event_log_api",
161 ]
162 }
163
164 # This target contains the real implementation of the audio/video related
165 # objects and it is used to build WebRTC with audio and video support.
166 rtc_source_set("pc_media") {
167 deps = [
168 "../call",
169 "../media:rtc_audio_video",
170 ]
171
172 if (!build_with_chromium && is_clang) {
173 # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
174 suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
175 }
176 }
177
178 # The modular build targets can be used to build WebRTC with different
179 # functionalities. The users can choose either the real implemenation
180 # or the null implementation of the audio/video modules based on their
181 # requirements.
182 #
183 # For example, to build WebRTC with datachannel support only, we would need the
184 # the peerconnection and the null implementation of the audio and video modules.
185 #
186 # rtc_source_set("datachannel_only") {
187 # deps = [
188 # ":pc_null_audio",
189 # ":pc_null_media",
190 # ":peerconnection",
191 # ]
192 # }
193 #
194 # To build WebRTC with all the audio, video and datachannel support, we would
195 # need the peerconnection and the real implementation of the audio and video
196 # modules.
197 #
198 # rtc_source_set("full") {
199 # deps = [
200 # ":pc_audio",
201 # ":pc_media",
202 # ":peerconnection",
203 # ]
204 # }
205 rtc_static_library("peerconnection") {
89 cflags = [] 206 cflags = []
90 sources = [ 207 sources = [
91 "audiotrack.cc", 208 "audiotrack.cc",
92 "audiotrack.h", 209 "audiotrack.h",
93 "datachannel.cc", 210 "datachannel.cc",
94 "datachannel.h", 211 "datachannel.h",
95 "dtmfsender.cc", 212 "dtmfsender.cc",
96 "dtmfsender.h", 213 "dtmfsender.h",
97 "iceserverparsing.cc", 214 "iceserverparsing.cc",
98 "iceserverparsing.h", 215 "iceserverparsing.h",
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
139 ] 256 ]
140 257
141 configs += [ ":libjingle_peerconnection_warnings_config" ] 258 configs += [ ":libjingle_peerconnection_warnings_config" ]
142 259
143 if (!build_with_chromium && is_clang) { 260 if (!build_with_chromium && is_clang) {
144 # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163). 261 # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
145 suppressed_configs += [ "//build/config/clang:find_bad_constructs" ] 262 suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
146 } 263 }
147 264
148 deps = [ 265 deps = [
149 ":rtc_pc", 266 ":rtc_pc_base",
150 "..:webrtc_common", 267 "..:webrtc_common",
151 "../api:call_api", 268 "../api:call_api",
152 "../api:rtc_stats_api", 269 "../api:rtc_stats_api",
153 "../api/audio_codecs:builtin_audio_decoder_factory",
154 "../api/audio_codecs:builtin_audio_encoder_factory",
155 "../api/video_codecs:video_codecs_api", 270 "../api/video_codecs:video_codecs_api",
156 "../base:rtc_base", 271 "../base:rtc_base",
157 "../base:rtc_base_approved", 272 "../base:rtc_base_approved",
158 "../call", 273 "../call:call_interfaces",
159 "../logging:rtc_event_log_api", 274 "../logging:rtc_event_log_api",
160 "../media", 275 "../media:rtc_data",
161 "../modules/audio_device:audio_device", 276 "../media:rtc_media_base_data",
162 "../p2p:rtc_p2p", 277 "../p2p:rtc_p2p",
163 "../stats", 278 "../stats",
164 "../system_wrappers:system_wrappers", 279 "../system_wrappers:system_wrappers",
165 ] 280 ]
166 281
167 public_deps = [ 282 public_deps = [
168 "../api:libjingle_peerconnection_api", 283 "../api:libjingle_peerconnection_api",
169 ] 284 ]
285 }
286
287 # TODO(zhihuang): Remove this once the downstream dependencies start using the
288 # modular targets.
289 rtc_source_set("libjingle_peerconnection") {
290 public_deps = [
291 ":pc_audio",
292 ":pc_media",
293 ":peerconnection",
294 "../api:libjingle_peerconnection_api",
295 ]
170 296
171 if (rtc_use_quic) { 297 if (rtc_use_quic) {
172 sources += [ 298 sources += [
173 "quicdatachannel.cc", 299 "quicdatachannel.cc",
174 "quicdatachannel.h", 300 "quicdatachannel.h",
175 "quicdatatransport.cc", 301 "quicdatatransport.cc",
176 "quicdatatransport.h", 302 "quicdatatransport.h",
177 ] 303 ]
178 deps += [ "//third_party/libquic" ] 304 deps += [ "//third_party/libquic" ]
179 public_deps = [ 305 public_deps = [
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
237 if (rtc_build_libsrtp) { 363 if (rtc_build_libsrtp) {
238 deps += [ "//third_party/libsrtp" ] 364 deps += [ "//third_party/libsrtp" ]
239 } 365 }
240 366
241 if (is_android) { 367 if (is_android) {
242 deps += [ "//testing/android/native_test:native_test_support" ] 368 deps += [ "//testing/android/native_test:native_test_support" ]
243 } 369 }
244 } 370 }
245 371
246 rtc_source_set("pc_test_utils") { 372 rtc_source_set("pc_test_utils") {
373 # Cannot have GN check enabled because this target would also be used in the
374 # "peerconnection_datachannelonly_unittests" and we don't want to depend on
375 # the target "media:rtc_media_tests_utils" indrectly since it contains all
376 # the audio and video related classes.
377 # TODO(zhihuang): Enable the check once the "media:rtc_media_tests_utils" is
378 # broken down to modular sub-targets.
379 check_includes = false
247 testonly = true 380 testonly = true
248 sources = [ 381 sources = [
249 "test/fakeaudiocapturemodule.cc", 382 "test/fakeaudiocapturemodule.cc",
250 "test/fakeaudiocapturemodule.h", 383 "test/fakeaudiocapturemodule.h",
251 "test/fakedatachannelprovider.h", 384 "test/fakedatachannelprovider.h",
252 "test/fakeperiodicvideocapturer.h", 385 "test/fakeperiodicvideocapturer.h",
253 "test/fakertccertificategenerator.h", 386 "test/fakertccertificategenerator.h",
254 "test/fakevideotrackrenderer.h", 387 "test/fakevideotrackrenderer.h",
255 "test/fakevideotracksource.h", 388 "test/fakevideotracksource.h",
256 "test/mock_datachannel.h", 389 "test/mock_datachannel.h",
257 "test/mock_peerconnection.h", 390 "test/mock_peerconnection.h",
258 "test/mock_webrtcsession.h", 391 "test/mock_webrtcsession.h",
259 "test/mockpeerconnectionobservers.h", 392 "test/mockpeerconnectionobservers.h",
260 "test/peerconnectiontestwrapper.cc", 393 "test/peerconnectiontestwrapper.cc",
261 "test/peerconnectiontestwrapper.h", 394 "test/peerconnectiontestwrapper.h",
262 "test/rtcstatsobtainer.h", 395 "test/rtcstatsobtainer.h",
263 "test/testsdpstrings.h", 396 "test/testsdpstrings.h",
264 ] 397 ]
265 398
266 deps = [ 399 deps = [
267 ":libjingle_peerconnection", 400 ":peerconnection",
268 "..:webrtc_common", 401 "..:webrtc_common",
269 "../api:libjingle_peerconnection_test_api", 402 "../api:libjingle_peerconnection_test_api",
270 "../api:rtc_stats_api", 403 "../api:rtc_stats_api",
271 "../base:rtc_base", 404 "../base:rtc_base",
272 "../base:rtc_base_approved", 405 "../base:rtc_base_approved",
273 "../base:rtc_base_tests_utils", 406 "../base:rtc_base_tests_utils",
274 "../media:rtc_media",
275 "../media:rtc_media_tests_utils",
276 "../modules/audio_device:audio_device", 407 "../modules/audio_device:audio_device",
277 "../p2p:p2p_test_utils", 408 "../p2p:p2p_test_utils",
278 "../test:test_support", 409 "../test:test_support",
279 "//testing/gmock", 410 "//testing/gmock",
280 ] 411 ]
281 412
282 if (!build_with_chromium && is_clang) { 413 if (!build_with_chromium && is_clang) {
283 # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163). 414 # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
284 suppressed_configs += [ "//build/config/clang:find_bad_constructs" ] 415 suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
285 } 416 }
(...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after
391 "../system_wrappers:metrics_default", 522 "../system_wrappers:metrics_default",
392 "//testing/gmock", 523 "//testing/gmock",
393 ] 524 ]
394 525
395 if (is_android) { 526 if (is_android) {
396 deps += [ "//testing/android/native_test:native_test_support" ] 527 deps += [ "//testing/android/native_test:native_test_support" ]
397 528
398 shard_timeout = 900 529 shard_timeout = 900
399 } 530 }
400 } 531 }
532
533 rtc_test("peerconnection_datachannelonly_unittests") {
534 check_includes = false # TODO(zhihuang): Remove (bugs.webrtc.org/6828)
535 testonly = true
536 sources = [
537 "peerconnection_datachannelonly_unittest.cc",
538 ]
539
540 configs += [ ":peerconnection_unittests_config" ]
541
542 if (!build_with_chromium && is_clang) {
543 # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
544 suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
545 }
546
547 # TODO(jschuh): Bug 1348: fix this warning.
548 configs += [ "//build/config/compiler:no_size_t_to_int_warning" ]
549
550 if (is_win) {
551 cflags = [
552 "/wd4245", # conversion from int to size_t, signed/unsigned mismatch.
553 "/wd4389", # signed/unsigned mismatch.
554 ]
555 }
556
557 deps = []
558 if (is_android) {
559 sources += [
560 "test/androidtestinitializer.cc",
561 "test/androidtestinitializer.h",
562 ]
563 deps += [
564 "//testing/android/native_test:native_test_support",
565 "//webrtc/sdk/android:base_jni",
566 "//webrtc/sdk/android:libjingle_peerconnection_java",
567 "//webrtc/sdk/android:null_audio_jni",
568 "//webrtc/sdk/android:null_video_jni",
569 ]
570 }
571
572 deps += [
573 ":pc_null_audio",
574 ":pc_null_media",
575 ":pc_test_utils",
576 ":peerconnection",
577 "..:webrtc_common",
578 "../api:fakemetricsobserver",
579 "../base:rtc_base_approved",
580 "../base:rtc_base_tests_main",
581 "../base:rtc_base_tests_utils",
582 "../modules/utility",
583 "../pc:rtc_pc_base",
584 "../system_wrappers:metrics_default",
585 "//testing/gmock",
586 ]
587
588 if (is_android) {
589 deps += [ "//testing/android/native_test:native_test_support" ]
590 shard_timeout = 900
591 }
592 }
401 } 593 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698