Files
platform-external-webrtc/webrtc/examples/BUILD.gn
Kári Tristan Helgason 946923a21f Remove webrtc deps from AppRTCMobile.
We want the example app to only link agains the framework. This ensures
that we are actually testing the framework, and that AppRTCMobile
doesn't require any other parts of WebRTC not included in the framework.

Bug: webrtc:7759
Change-Id: Ib04aae0bc3ab2a1a508eaf4a4f15c2d37f521598
Reviewed-on: https://chromium-review.googlesource.com/522722
Reviewed-by: Magnus Jedvert <magjed@webrtc.org>
Commit-Queue: Kári Tristan Helgason <kthelgason@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#18470}
2017-06-07 11:13:48 +00:00

676 lines
21 KiB
Plaintext

# Copyright (c) 2016 The WebRTC project authors. All Rights Reserved.
#
# Use of this source code is governed by a BSD-style license
# that can be found in the LICENSE file in the root of the source
# tree. An additional intellectual property rights grant can be found
# in the file PATENTS. All contributing project authors may
# be found in the AUTHORS file in the root of the source tree.
import("../webrtc.gni")
if (is_android) {
import("//build/config/android/config.gni")
import("//build/config/android/rules.gni")
} else if (is_mac) {
import("//build/config/mac/rules.gni")
} else if (is_ios) {
import("//build/config/ios/rules.gni")
}
group("examples") {
# This target shall build all targets in examples.
testonly = true
public_deps = []
if (is_android) {
public_deps += [
":AppRTCMobile",
":AppRTCMobileTest",
":AppRTCMobileTestStubbedVideoIO",
]
}
if (!build_with_chromium) {
public_deps += [ ":stun_prober" ]
}
if (is_ios || (is_mac && target_cpu != "x86")) {
public_deps += [ ":AppRTCMobile" ]
}
if (is_linux || is_win) {
public_deps += [
":peerconnection_client",
":peerconnection_server",
":relayserver",
":stunserver",
":turnserver",
]
}
}
if (is_android) {
android_apk("AppRTCMobile") {
testonly = true
apk_name = "AppRTCMobile"
android_manifest = "androidapp/AndroidManifest.xml"
deps = [
":AppRTCMobile_javalib",
":AppRTCMobile_resources",
"//base:base_java",
"//webrtc/base:base_java",
]
shared_libraries = [ "//webrtc/sdk/android:libjingle_peerconnection_so" ]
}
android_library("AppRTCMobile_javalib") {
testonly = true
android_manifest = "androidapp/AndroidManifest.xml"
java_files = [
"androidapp/src/org/appspot/apprtc/AppRTCAudioManager.java",
"androidapp/src/org/appspot/apprtc/AppRTCBluetoothManager.java",
"androidapp/src/org/appspot/apprtc/AppRTCClient.java",
"androidapp/src/org/appspot/apprtc/AppRTCProximitySensor.java",
"androidapp/src/org/appspot/apprtc/CallActivity.java",
"androidapp/src/org/appspot/apprtc/CallFragment.java",
"androidapp/src/org/appspot/apprtc/CaptureQualityController.java",
"androidapp/src/org/appspot/apprtc/ConnectActivity.java",
"androidapp/src/org/appspot/apprtc/CpuMonitor.java",
"androidapp/src/org/appspot/apprtc/DirectRTCClient.java",
"androidapp/src/org/appspot/apprtc/HudFragment.java",
"androidapp/src/org/appspot/apprtc/PeerConnectionClient.java",
"androidapp/src/org/appspot/apprtc/RoomParametersFetcher.java",
"androidapp/src/org/appspot/apprtc/SettingsActivity.java",
"androidapp/src/org/appspot/apprtc/SettingsFragment.java",
"androidapp/src/org/appspot/apprtc/TCPChannelClient.java",
"androidapp/src/org/appspot/apprtc/UnhandledExceptionHandler.java",
"androidapp/src/org/appspot/apprtc/WebSocketChannelClient.java",
"androidapp/src/org/appspot/apprtc/WebSocketRTCClient.java",
"androidapp/src/org/appspot/apprtc/util/AppRTCUtils.java",
"androidapp/src/org/appspot/apprtc/util/AsyncHttpURLConnection.java",
]
deps = [
":AppRTCMobile_resources",
"//webrtc/base:base_java",
"//webrtc/examples/androidapp/third_party/autobanh:autobanh_java",
"//webrtc/modules/audio_device:audio_device_java",
"//webrtc/sdk/android:libjingle_peerconnection_java",
"//webrtc/sdk/android:libjingle_peerconnection_metrics_default_java",
]
}
android_resources("AppRTCMobile_resources") {
testonly = true
resource_dirs = [ "androidapp/res" ]
custom_package = "org.appspot.apprtc"
}
instrumentation_test_apk("AppRTCMobileTest") {
apk_name = "AppRTCMobileTest"
android_manifest = "androidtests/AndroidManifest.xml"
java_files = [ "androidtests/src/org/appspot/apprtc/test/PeerConnectionClientTest.java" ]
apk_under_test = ":AppRTCMobile"
deps = [
":AppRTCMobile_javalib",
"//base:base_java_test_support",
"//third_party/android_support_test_runner:runner_java",
"//third_party/junit",
"//webrtc/sdk/android:libjingle_peerconnection_java",
]
}
instrumentation_test_apk("AppRTCMobileTestStubbedVideoIO") {
apk_name = "AppRTCMobileTestStubbedVideoIO"
android_manifest = "androidtests/AndroidManifest.xml"
java_files = [ "androidtests/src/org/appspot/apprtc/test/CallActivityStubbedInputOutputTest.java" ]
apk_under_test = ":AppRTCMobile"
deps = [
":AppRTCMobile_javalib",
"//third_party/android_support_test_runner:rules_java",
"//third_party/android_support_test_runner:runner_java",
"//third_party/espresso:espresso_all_java",
"//third_party/hamcrest:hamcrest_java",
"//third_party/junit",
"//webrtc/sdk/android:libjingle_peerconnection_java",
]
data = [
"//resources/reference_video_640x360_30fps.y4m",
]
}
}
if (is_ios || (is_mac && target_cpu != "x86")) {
config("apprtc_common_config") {
include_dirs = [ "objc/AppRTCMobile/common" ]
}
rtc_static_library("apprtc_common") {
testonly = true
sources = [
"objc/AppRTCMobile/common/ARDUtilities.h",
"objc/AppRTCMobile/common/ARDUtilities.m",
]
public_configs = [ ":apprtc_common_config" ]
deps = [
"//webrtc/system_wrappers:field_trial_default",
"//webrtc/system_wrappers:metrics_default",
]
if (is_ios) {
deps += [ ":AppRTCMobile_ios_frameworks" ]
} else {
deps += [ "//webrtc/sdk:objc_common" ]
}
}
config("apprtc_signaling_config") {
include_dirs = [ "objc/AppRTCMobile" ]
# GN orders flags on a target before flags from configs. The default config
# adds these flags so to cancel them out they need to come from a config and
# cannot be on the target directly.
cflags = [
"-Wno-sign-compare",
"-Wno-unused-variable",
]
}
rtc_static_library("apprtc_signaling") {
testonly = true
sources = [
"objc/AppRTCMobile/ARDAppClient+Internal.h",
"objc/AppRTCMobile/ARDAppClient.h",
"objc/AppRTCMobile/ARDAppClient.m",
"objc/AppRTCMobile/ARDAppEngineClient.h",
"objc/AppRTCMobile/ARDAppEngineClient.m",
"objc/AppRTCMobile/ARDBitrateTracker.h",
"objc/AppRTCMobile/ARDBitrateTracker.m",
"objc/AppRTCMobile/ARDCaptureController.h",
"objc/AppRTCMobile/ARDCaptureController.m",
"objc/AppRTCMobile/ARDJoinResponse+Internal.h",
"objc/AppRTCMobile/ARDJoinResponse.h",
"objc/AppRTCMobile/ARDJoinResponse.m",
"objc/AppRTCMobile/ARDMessageResponse+Internal.h",
"objc/AppRTCMobile/ARDMessageResponse.h",
"objc/AppRTCMobile/ARDMessageResponse.m",
"objc/AppRTCMobile/ARDRoomServerClient.h",
"objc/AppRTCMobile/ARDSDPUtils.h",
"objc/AppRTCMobile/ARDSDPUtils.m",
"objc/AppRTCMobile/ARDSettingsModel+Private.h",
"objc/AppRTCMobile/ARDSettingsModel.h",
"objc/AppRTCMobile/ARDSettingsModel.m",
"objc/AppRTCMobile/ARDSettingsStore.h",
"objc/AppRTCMobile/ARDSettingsStore.m",
"objc/AppRTCMobile/ARDSignalingChannel.h",
"objc/AppRTCMobile/ARDSignalingMessage.h",
"objc/AppRTCMobile/ARDSignalingMessage.m",
"objc/AppRTCMobile/ARDStatsBuilder.h",
"objc/AppRTCMobile/ARDStatsBuilder.m",
"objc/AppRTCMobile/ARDTURNClient+Internal.h",
"objc/AppRTCMobile/ARDTURNClient.h",
"objc/AppRTCMobile/ARDTURNClient.m",
"objc/AppRTCMobile/ARDWebSocketChannel.h",
"objc/AppRTCMobile/ARDWebSocketChannel.m",
"objc/AppRTCMobile/RTCIceCandidate+JSON.h",
"objc/AppRTCMobile/RTCIceCandidate+JSON.m",
"objc/AppRTCMobile/RTCIceServer+JSON.h",
"objc/AppRTCMobile/RTCIceServer+JSON.m",
"objc/AppRTCMobile/RTCMediaConstraints+JSON.h",
"objc/AppRTCMobile/RTCMediaConstraints+JSON.m",
"objc/AppRTCMobile/RTCSessionDescription+JSON.h",
"objc/AppRTCMobile/RTCSessionDescription+JSON.m",
]
public_configs = [ ":apprtc_signaling_config" ]
deps = [
":apprtc_common",
":socketrocket",
]
if (is_ios) {
deps += [ ":AppRTCMobile_ios_frameworks" ]
} else {
public_deps = [
"//webrtc/sdk:objc_peerconnection",
]
}
libs = [ "QuartzCore.framework" ]
}
if (is_ios) {
rtc_static_library("AppRTCMobile_lib") {
testonly = true
sources = [
"objc/AppRTCMobile/ios/ARDAppDelegate.m",
"objc/AppRTCMobile/ios/ARDMainView.h",
"objc/AppRTCMobile/ios/ARDMainView.m",
"objc/AppRTCMobile/ios/ARDMainViewController.h",
"objc/AppRTCMobile/ios/ARDMainViewController.m",
"objc/AppRTCMobile/ios/ARDSettingsViewController.h",
"objc/AppRTCMobile/ios/ARDSettingsViewController.m",
"objc/AppRTCMobile/ios/ARDStatsView.h",
"objc/AppRTCMobile/ios/ARDStatsView.m",
"objc/AppRTCMobile/ios/ARDVideoCallView.h",
"objc/AppRTCMobile/ios/ARDVideoCallView.m",
"objc/AppRTCMobile/ios/ARDVideoCallViewController.h",
"objc/AppRTCMobile/ios/ARDVideoCallViewController.m",
"objc/AppRTCMobile/ios/AppRTCMobile-Prefix.pch",
"objc/AppRTCMobile/ios/UIImage+ARDUtilities.h",
"objc/AppRTCMobile/ios/UIImage+ARDUtilities.m",
]
deps = [
":AppRTCMobile_ios_frameworks",
":apprtc_common",
":apprtc_signaling",
# TODO(kthelgason): Remove this dep when audio_device has been
# moved to sdk.
"//webrtc/modules/audio_device:audio_device",
]
}
ios_app_bundle("AppRTCMobile") {
testonly = true
sources = [
"objc/AppRTCMobile/ios/main.m",
]
info_plist = "objc/AppRTCMobile/ios/Info.plist"
configs += [ "..:common_config" ]
public_configs = [ "..:common_inherited_config" ]
deps = [
":AppRTCMobile_ios_bundle_data",
":AppRTCMobile_ios_frameworks",
":AppRTCMobile_lib",
]
if (target_cpu == "x86") {
deps += [ "//testing/iossim:iossim" ]
}
}
bundle_data("AppRTCMobile_ios_frameworks") {
public_deps = [
"//webrtc/sdk:objc_framework+link",
]
sources = [
"$root_out_dir/WebRTC.framework",
]
outputs = [
"{{bundle_resources_dir}}/Frameworks/{{source_file_part}}",
]
}
bundle_data("AppRTCMobile_ios_bundle_data") {
sources = [
"objc/AppRTCMobile/ios/resources/Roboto-Regular.ttf",
"objc/AppRTCMobile/ios/resources/iPhone5@2x.png",
"objc/AppRTCMobile/ios/resources/iPhone6@2x.png",
"objc/AppRTCMobile/ios/resources/iPhone6p@3x.png",
"objc/AppRTCMobile/ios/resources/ic_call_end_black_24dp.png",
"objc/AppRTCMobile/ios/resources/ic_call_end_black_24dp@2x.png",
"objc/AppRTCMobile/ios/resources/ic_clear_black_24dp.png",
"objc/AppRTCMobile/ios/resources/ic_clear_black_24dp@2x.png",
"objc/AppRTCMobile/ios/resources/ic_settings_black_24dp.png",
"objc/AppRTCMobile/ios/resources/ic_settings_black_24dp@2x.png",
"objc/AppRTCMobile/ios/resources/ic_surround_sound_black_24dp.png",
"objc/AppRTCMobile/ios/resources/ic_surround_sound_black_24dp@2x.png",
"objc/AppRTCMobile/ios/resources/ic_switch_video_black_24dp.png",
"objc/AppRTCMobile/ios/resources/ic_switch_video_black_24dp@2x.png",
"objc/AppRTCMobile/ios/resources/mozart.mp3",
"objc/Icon.png",
]
outputs = [
"{{bundle_resources_dir}}/{{source_file_part}}",
]
}
}
if (is_mac) {
rtc_static_library("AppRTCMobile_lib") {
testonly = true
sources = [
"objc/AppRTCMobile/mac/APPRTCAppDelegate.h",
"objc/AppRTCMobile/mac/APPRTCAppDelegate.m",
"objc/AppRTCMobile/mac/APPRTCViewController.h",
"objc/AppRTCMobile/mac/APPRTCViewController.m",
]
configs += [ "//webrtc:common_objc" ]
deps = [
":apprtc_common",
":apprtc_signaling",
"//webrtc/sdk:objc_ui",
]
}
mac_app_bundle("AppRTCMobile") {
testonly = true
output_name = "AppRTCMobile"
sources = [
"objc/AppRTCMobile/mac/main.m",
]
public_configs = [ "..:common_inherited_config" ]
info_plist = "objc/AppRTCMobile/mac/Info.plist"
libs = [ "AppKit.framework" ]
deps = [
":AppRTCMobile_lib",
]
}
}
config("socketrocket_include_config") {
include_dirs = [ "objc/AppRTCMobile/third_party/SocketRocket" ]
}
config("socketrocket_warning_config") {
# GN orders flags on a target before flags from configs. The default config
# adds these flags so to cancel them out they need to come from a config and
# cannot be on the target directly.
cflags = [
"-Wno-deprecated-declarations",
"-Wno-nonnull",
"-Wno-semicolon-before-method-body",
"-Wno-unused-variable",
]
cflags_objc = [
# Enabled for cflags_objc in build/config/compiler/BUILD.gn.
"-Wno-objc-missing-property-synthesis",
]
}
rtc_static_library("socketrocket") {
testonly = true
sources = [
"objc/AppRTCMobile/third_party/SocketRocket/SRWebSocket.h",
"objc/AppRTCMobile/third_party/SocketRocket/SRWebSocket.m",
]
configs += [ ":socketrocket_warning_config" ]
public_configs = [ ":socketrocket_include_config" ]
libs = [
"CFNetwork.framework",
"icucore",
]
}
if (rtc_include_tests) {
# TODO(kthelgason): compile xctests on mac when chromium supports it.
if (is_ios) {
rtc_source_set("apprtcmobile_test_sources") {
testonly = true
include_dirs = [
"objc/AppRTCMobile",
"objc/AppRTCMobile/ios",
]
testonly = true
sources = [
"objc/AppRTCMobile/tests/ARDAppClient_xctest.mm",
"objc/AppRTCMobile/tests/ARDSDPUtils_xctest.mm",
"objc/AppRTCMobile/tests/ARDSettingsModel_xctest.mm",
]
deps = [
"//webrtc/base:rtc_base",
]
public_deps = [
":AppRTCMobile_ios_frameworks",
":AppRTCMobile_lib",
"//build/config/ios:xctest",
"//third_party/ocmock",
]
}
rtc_ios_xctest_test("apprtcmobile_tests") {
info_plist = "objc/AppRTCMobile/ios/Info.plist"
sources = [
"objc/AppRTCMobile/ios/main.m",
]
deps = [
":apprtcmobile_test_sources",
]
ldflags = [ "-all_load" ]
}
}
}
}
if (is_linux || is_win) {
config("peerconnection_client_warnings_config") {
cflags = []
if (is_win && is_clang) {
cflags += [
# Disable warnings failing when compiling with Clang on Windows.
# https://bugs.chromium.org/p/webrtc/issues/detail?id=5366
"-Wno-format",
# See https://bugs.chromium.org/p/webrtc/issues/detail?id=6271
# for -Wno-reorder and -Wno-sign-compare
"-Wno-reorder",
"-Wno-sign-compare",
]
}
if (is_linux && target_cpu == "x86") {
cflags += [
# Needed to compile on Linux 32-bit.
"-Wno-sentinel",
]
}
if (is_clang) {
# TODO(ehmaldonado): Make peerconnection_client compile with the standard
# set of warnings.
# See https://bugs.chromium.org/p/webrtc/issues/detail?id=6306
cflags += [ "-Wno-inconsistent-missing-override" ]
}
}
rtc_executable("peerconnection_client") {
testonly = true
sources = [
"peerconnection/client/conductor.cc",
"peerconnection/client/conductor.h",
"peerconnection/client/defaults.cc",
"peerconnection/client/defaults.h",
"peerconnection/client/peer_connection_client.cc",
"peerconnection/client/peer_connection_client.h",
]
if (!build_with_chromium && is_clang) {
# Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
}
deps = []
if (is_win) {
sources += [
"peerconnection/client/flagdefs.h",
"peerconnection/client/main.cc",
"peerconnection/client/main_wnd.cc",
"peerconnection/client/main_wnd.h",
]
cflags = [ "/wd4245" ]
configs += [ "//build/config/win:windowed" ]
deps += [ "//webrtc/media:rtc_media_base" ]
}
if (is_linux) {
sources += [
"peerconnection/client/linux/main.cc",
"peerconnection/client/linux/main_wnd.cc",
"peerconnection/client/linux/main_wnd.h",
]
cflags = [ "-Wno-deprecated-declarations" ]
libs = [
"X11",
"Xcomposite",
"Xext",
"Xrender",
]
deps += [ "//build/config/linux/gtk" ]
}
configs += [ ":peerconnection_client_warnings_config" ]
deps += [
"//third_party/libyuv",
"//webrtc/api:libjingle_peerconnection_test_api",
"//webrtc/api:video_frame_api",
"//webrtc/base:rtc_base",
"//webrtc/base:rtc_base_approved",
"//webrtc/base:rtc_json",
"//webrtc/media:rtc_media",
"//webrtc/modules/video_capture:video_capture_module",
"//webrtc/pc:libjingle_peerconnection",
"//webrtc/system_wrappers:field_trial_default",
"//webrtc/system_wrappers:metrics_default",
]
}
rtc_executable("peerconnection_server") {
testonly = true
sources = [
"peerconnection/server/data_socket.cc",
"peerconnection/server/data_socket.h",
"peerconnection/server/main.cc",
"peerconnection/server/peer_channel.cc",
"peerconnection/server/peer_channel.h",
"peerconnection/server/utils.cc",
"peerconnection/server/utils.h",
]
deps = [
"//webrtc:webrtc_common",
"//webrtc/base:rtc_base_approved",
"//webrtc/tools:command_line_parser",
]
if (!build_with_chromium && is_clang) {
# Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
}
}
rtc_executable("relayserver") {
testonly = true
sources = [
"relayserver/relayserver_main.cc",
]
deps = [
"../base:rtc_base",
"//webrtc/base:rtc_base_approved",
"//webrtc/p2p:rtc_p2p",
"//webrtc/pc:rtc_pc",
"//webrtc/system_wrappers:field_trial_default",
"//webrtc/system_wrappers:metrics_default",
]
if (!build_with_chromium && is_clang) {
# Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
}
}
rtc_executable("turnserver") {
testonly = true
sources = [
"turnserver/turnserver_main.cc",
]
deps = [
"../base:rtc_base",
"//webrtc/base:rtc_base_approved",
"//webrtc/p2p:rtc_p2p",
"//webrtc/pc:rtc_pc",
"//webrtc/system_wrappers:field_trial_default",
"//webrtc/system_wrappers:metrics_default",
]
if (!build_with_chromium && is_clang) {
# Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
}
}
rtc_executable("stunserver") {
testonly = true
sources = [
"stunserver/stunserver_main.cc",
]
deps = [
"../base:rtc_base",
"//webrtc/base:rtc_base_approved",
"//webrtc/p2p:rtc_p2p",
"//webrtc/pc:rtc_pc",
"//webrtc/system_wrappers:field_trial_default",
"//webrtc/system_wrappers:metrics_default",
]
if (!build_with_chromium && is_clang) {
# Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
}
}
}
if (is_win) {
rtc_shared_library("webrtc_unity_plugin") {
testonly = true
sources = [
"unityplugin/simple_peer_connection.cc",
"unityplugin/simple_peer_connection.h",
"unityplugin/unity_plugin_apis.cc",
"unityplugin/unity_plugin_apis.h",
]
if (!build_with_chromium && is_clang) {
# Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
}
cflags = [ "/wd4245" ]
configs += [
"//build/config/win:windowed",
":peerconnection_client_warnings_config",
]
deps = [
"//webrtc/api:libjingle_peerconnection_test_api",
"//webrtc/api:video_frame_api",
"//webrtc/base:rtc_base",
"//webrtc/base:rtc_base_approved",
"//webrtc/base:rtc_json",
"//webrtc/media:rtc_media",
"//webrtc/media:rtc_media_base",
"//webrtc/modules/video_capture:video_capture_module",
"//webrtc/pc:libjingle_peerconnection",
"//webrtc/system_wrappers:field_trial_default",
"//webrtc/system_wrappers:metrics_default",
]
}
}
if (!build_with_chromium) {
# Doesn't build within Chrome on Win.
rtc_executable("stun_prober") {
testonly = true
sources = [
"stunprober/main.cc",
]
if (!build_with_chromium && is_clang) {
# Suppress warnings from Chrome's Clang plugins.
# See http://code.google.com/p/webrtc/issues/detail?id=163 for details.
suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
}
deps = [
"../base:rtc_base",
"../base:rtc_base_approved",
"../p2p:libstunprober",
"../p2p:rtc_p2p",
"../system_wrappers:field_trial_default",
]
}
}