From 9c0c75bd6edf80d7a2edd6028ac6b96393d063a7 Mon Sep 17 00:00:00 2001 From: Sami Kalliomaki Date: Wed, 29 Jun 2016 14:55:00 +0200 Subject: [PATCH] Add GN targets for AppRTC Demo on Android. Adds GN equivalents for following targets: AppRTCDemo -> //webrtc/examples:AppRTCDemo AppRTCDemo_apk -> //webrtc/examples:AppRTCDemo_lib (kind of) AppRTCDemoJUnitTest -> //webrtc/examples:AppRTCDemoJUnitTest AppRTCDemoTest -> //webrtc/examples:AppRTCDemoTest libjingle_peerconnection_java -> //webrtc/api/libjingle_peerconnection_java libjingle_peerconnection_so -> //webrtc/api/libjingle_peerconnection_so New GN targets: //webrtc/base:base_java //webrtc/examples:AppRTCDemo_resources //webrtc/examples/androidapp/third_party/autobanh:autobanh_java BUG=webrtc:6035 R=magjed@webrtc.org, tommi@webrtc.org Review URL: https://codereview.webrtc.org/2105803002 . Cr-Commit-Position: refs/heads/master@{#13322} --- BUILD.gn | 1 + webrtc/api/BUILD.gn | 77 +++++++++++++ webrtc/base/BUILD.gn | 19 ++++ webrtc/examples/BUILD.gn | 103 ++++++++++++++++++ .../androidapp/third_party/autobanh/BUILD.gn | 13 +++ .../autobanh/{ => lib}/autobanh.jar | Bin webrtc/webrtc_examples.gyp | 4 +- 7 files changed, 215 insertions(+), 2 deletions(-) create mode 100644 webrtc/examples/BUILD.gn create mode 100644 webrtc/examples/androidapp/third_party/autobanh/BUILD.gn rename webrtc/examples/androidapp/third_party/autobanh/{ => lib}/autobanh.jar (100%) diff --git a/BUILD.gn b/BUILD.gn index b7f7a0619a..c2b7ba4d19 100644 --- a/BUILD.gn +++ b/BUILD.gn @@ -10,5 +10,6 @@ group("root") { deps = [ "//webrtc", + "//webrtc/examples", ] } diff --git a/webrtc/api/BUILD.gn b/webrtc/api/BUILD.gn index fa46e4a318..b0784ad706 100644 --- a/webrtc/api/BUILD.gn +++ b/webrtc/api/BUILD.gn @@ -8,6 +8,10 @@ import("../build/webrtc.gni") import("//testing/test.gni") +if (is_android) { + import("//build/config/android/config.gni") + import("//build/config/android/rules.gni") +} group("api") { deps = [ @@ -206,6 +210,79 @@ if (is_android && !build_with_chromium) { include_dirs += [ "$rtc_libyuv_dir/include" ] } } + + shared_library("libjingle_peerconnection_so") { + sources = [ + "java/jni/jni_onload.cc", + ] + + configs -= [ "//build/config/android:hide_native_jni_exports" ] + + deps = [ + ":libjingle_peerconnection", + ":libjingle_peerconnection_jni", + ] + } + + android_library("libjingle_peerconnection_java") { + java_files = [ + "../modules/audio_device/android/java/src/org/webrtc/voiceengine/BuildInfo.java", + "../modules/audio_device/android/java/src/org/webrtc/voiceengine/WebRtcAudioEffects.java", + "../modules/audio_device/android/java/src/org/webrtc/voiceengine/WebRtcAudioManager.java", + "../modules/audio_device/android/java/src/org/webrtc/voiceengine/WebRtcAudioRecord.java", + "../modules/audio_device/android/java/src/org/webrtc/voiceengine/WebRtcAudioTrack.java", + "../modules/audio_device/android/java/src/org/webrtc/voiceengine/WebRtcAudioUtils.java", + "java/android/org/webrtc/Camera1Enumerator.java", + "java/android/org/webrtc/Camera2Capturer.java", + "java/android/org/webrtc/Camera2Enumerator.java", + "java/android/org/webrtc/CameraEnumerationAndroid.java", + "java/android/org/webrtc/CameraEnumerator.java", + "java/android/org/webrtc/CameraVideoCapturer.java", + "java/android/org/webrtc/EglBase.java", + "java/android/org/webrtc/EglBase10.java", + "java/android/org/webrtc/EglBase14.java", + "java/android/org/webrtc/GlRectDrawer.java", + "java/android/org/webrtc/GlShader.java", + "java/android/org/webrtc/GlTextureFrameBuffer.java", + "java/android/org/webrtc/GlUtil.java", + "java/android/org/webrtc/NetworkMonitor.java", + "java/android/org/webrtc/NetworkMonitorAutoDetect.java", + "java/android/org/webrtc/RendererCommon.java", + "java/android/org/webrtc/SurfaceTextureHelper.java", + "java/android/org/webrtc/SurfaceViewRenderer.java", + "java/android/org/webrtc/VideoCapturerAndroid.java", + "java/android/org/webrtc/VideoRendererGui.java", + "java/src/org/webrtc/AudioSource.java", + "java/src/org/webrtc/AudioTrack.java", + "java/src/org/webrtc/CallSessionFileRotatingLogSink.java", + "java/src/org/webrtc/DataChannel.java", + "java/src/org/webrtc/IceCandidate.java", + "java/src/org/webrtc/MediaCodecVideoDecoder.java", + "java/src/org/webrtc/MediaCodecVideoEncoder.java", + "java/src/org/webrtc/MediaConstraints.java", + "java/src/org/webrtc/MediaSource.java", + "java/src/org/webrtc/MediaStream.java", + "java/src/org/webrtc/MediaStreamTrack.java", + "java/src/org/webrtc/Metrics.java", + "java/src/org/webrtc/PeerConnection.java", + "java/src/org/webrtc/PeerConnectionFactory.java", + "java/src/org/webrtc/RtpParameters.java", + "java/src/org/webrtc/RtpReceiver.java", + "java/src/org/webrtc/RtpSender.java", + "java/src/org/webrtc/SdpObserver.java", + "java/src/org/webrtc/SessionDescription.java", + "java/src/org/webrtc/StatsObserver.java", + "java/src/org/webrtc/StatsReport.java", + "java/src/org/webrtc/VideoCapturer.java", + "java/src/org/webrtc/VideoRenderer.java", + "java/src/org/webrtc/VideoSource.java", + "java/src/org/webrtc/VideoTrack.java", + ] + + deps = [ + "//webrtc/base:base_java", + ] + } } if (rtc_include_tests) { diff --git a/webrtc/base/BUILD.gn b/webrtc/base/BUILD.gn index e971d0b0fe..94c4d81e3d 100644 --- a/webrtc/base/BUILD.gn +++ b/webrtc/base/BUILD.gn @@ -12,6 +12,11 @@ import("../build/webrtc.gni") import("//build_overrides/webrtc.gni") +if (is_android) { + import("//build/config/android/config.gni") + import("//build/config/android/rules.gni") +} + config("rtc_base_approved_all_dependent_config") { if (is_mac && !build_with_chromium) { libs = [ "Foundation.framework" ] # needed for logging_mac.mm @@ -679,3 +684,17 @@ if (rtc_include_tests) { ] } } + +if (is_android) { + android_library("base_java") { + java_files = [ + "java/src/org/webrtc/Logging.java", + "java/src/org/webrtc/Size.java", + "java/src/org/webrtc/ThreadUtils.java", + ] + + deps = [ + "//base:base_java", + ] + } +} diff --git a/webrtc/examples/BUILD.gn b/webrtc/examples/BUILD.gn new file mode 100644 index 0000000000..315992bdc3 --- /dev/null +++ b/webrtc/examples/BUILD.gn @@ -0,0 +1,103 @@ +# 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. + +if (is_android) { + import("//build/config/android/config.gni") + import("//build/config/android/rules.gni") +} + +group("examples") { + deps = [] + + if (is_android && !build_with_chromium) { + deps += [ ":AppRTCDemo" ] + } +} + +if (is_android && !build_with_chromium) { + android_apk("AppRTCDemo") { + apk_name = "AppRTCDemo" + android_manifest = "androidapp/AndroidManifest.xml" + + deps = [ + ":AppRTCDemo_lib", + ":AppRTCDemo_resources", + "//base:base_java", + "//webrtc/base:base_java", + ] + + shared_libraries = [ "//webrtc/api:libjingle_peerconnection_so" ] + } + + android_library("AppRTCDemo_lib") { + java_files = [ + "androidapp/src/org/appspot/apprtc/AppRTCAudioManager.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/PercentFrameLayout.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", + "androidapp/src/org/appspot/apprtc/util/LooperExecutor.java", + ] + + deps = [ + ":AppRTCDemo_resources", + "//webrtc/api:libjingle_peerconnection_java", + "//webrtc/base:base_java", + "//webrtc/examples/androidapp/third_party/autobanh:autobanh_java", + ] + } + + android_resources("AppRTCDemo_resources") { + resource_dirs = [ "androidapp/res" ] + custom_package = "org.appspot.apprtc" + } + + instrumentation_test_apk("AppRTCDemoTest") { + apk_name = "AppRTCDemoTest" + android_manifest = "androidtests/AndroidManifest.xml" + + java_files = [ "androidtests/src/org/appspot/apprtc/test/PeerConnectionClientTest.java" ] + + apk_under_test = ":AppRTCDemo" + + deps = [ + ":AppRTCDemo_lib", + "//webrtc/api:libjingle_peerconnection_java", + ] + } + + junit_binary("AppRTCDemoJUnitTest") { + java_files = [ + "androidjunit/src/org/appspot/apprtc/DirectRTCClientTest.java", + "androidjunit/src/org/appspot/apprtc/TCPChannelClientTest.java", + "androidjunit/src/org/appspot/apprtc/util/LooperExecutorTest.java", + ] + + deps = [ + ":AppRTCDemo_lib", + "//webrtc/api:libjingle_peerconnection_java", + "//webrtc/api:libjingle_peerconnection_jni", + ] + } +} diff --git a/webrtc/examples/androidapp/third_party/autobanh/BUILD.gn b/webrtc/examples/androidapp/third_party/autobanh/BUILD.gn new file mode 100644 index 0000000000..d5f6b0f2d6 --- /dev/null +++ b/webrtc/examples/androidapp/third_party/autobanh/BUILD.gn @@ -0,0 +1,13 @@ +# 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("//build/config/android/rules.gni") + +android_java_prebuilt("autobanh_java") { + jar_path = "lib/autobanh.jar" +} diff --git a/webrtc/examples/androidapp/third_party/autobanh/autobanh.jar b/webrtc/examples/androidapp/third_party/autobanh/lib/autobanh.jar similarity index 100% rename from webrtc/examples/androidapp/third_party/autobanh/autobanh.jar rename to webrtc/examples/androidapp/third_party/autobanh/lib/autobanh.jar diff --git a/webrtc/webrtc_examples.gyp b/webrtc/webrtc_examples.gyp index 0978404435..347810bea4 100755 --- a/webrtc/webrtc_examples.gyp +++ b/webrtc/webrtc_examples.gyp @@ -419,10 +419,10 @@ 'R_package': 'org.appspot.apprtc', 'R_package_relpath': 'org/appspot/apprtc', 'input_jars_paths': [ - 'examples/androidapp/third_party/autobanh/autobanh.jar', + 'examples/androidapp/third_party/autobanh/lib/autobanh.jar', ], 'library_dexed_jars_paths': [ - 'examples/androidapp/third_party/autobanh/autobanh.jar', + 'examples/androidapp/third_party/autobanh/lib/autobanh.jar', ], 'native_lib_target': 'libjingle_peerconnection_so', 'add_to_dependents_classpaths':1,